mirror of
https://gitee.com/farsunset/cim.git
synced 2025-08-03 04:55:47 +08:00
1修改了端开服务端后 某些情况下 又自动连上的的bug
2新增了 与服务端断开连接的事件
This commit is contained in:
parent
ae509b3f0c
commit
b21a344064
BIN
CIM客户端文档.doc
BIN
CIM客户端文档.doc
Binary file not shown.
@ -38,7 +38,7 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
|
|
||||||
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_CLOSED))
|
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_CLOSED))
|
||||||
{
|
{
|
||||||
onConnectionClosed();
|
dispatchConnectionClosed();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_FAILED))
|
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_FAILED))
|
||||||
@ -48,7 +48,7 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
|
|
||||||
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_SUCCESS))
|
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_SUCCESS))
|
||||||
{
|
{
|
||||||
onDispatchConnectionSucceed();
|
dispatchConnectionSucceed();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(it.getAction().equals(CIMConnectorManager.ACTION_MESSAGE_RECEIVED))
|
if(it.getAction().equals(CIMConnectorManager.ACTION_MESSAGE_RECEIVED))
|
||||||
@ -84,6 +84,18 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void dispatchConnectionClosed() {
|
||||||
|
|
||||||
|
if(CIMConnectorManager.netWorkAvailable(context))
|
||||||
|
{
|
||||||
|
CIMPushManager.init(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
onConnectionClosed();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected boolean isInBackground(Context context) {
|
protected boolean isInBackground(Context context) {
|
||||||
List<RunningTaskInfo> tasksInfo = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1);
|
List<RunningTaskInfo> tasksInfo = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1);
|
||||||
if (tasksInfo.size() > 0) {
|
if (tasksInfo.size() > 0) {
|
||||||
@ -97,26 +109,22 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onConnectionClosed(){
|
|
||||||
|
|
||||||
|
|
||||||
boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP);
|
|
||||||
|
|
||||||
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
|
|
||||||
|
|
||||||
if(CIMConnectorManager.netWorkAvailable(context) && !isManualStop && !isManualDestory)
|
|
||||||
{
|
|
||||||
CIMPushManager.init(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onConnectionFailed(Exception e){
|
private void onConnectionFailed(Exception e){
|
||||||
|
|
||||||
if(CIMConnectorManager.netWorkAvailable(context))
|
if(CIMConnectorManager.netWorkAvailable(context))
|
||||||
{
|
{
|
||||||
CIMPushManager.init(context);
|
CIMPushManager.init(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void dispatchConnectionSucceed() {
|
||||||
|
|
||||||
|
CIMPushManager.setAccount(context);
|
||||||
|
onConnectionSucceed();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void onUncaughtException(Throwable arg0) {}
|
private void onUncaughtException(Throwable arg0) {}
|
||||||
|
|
||||||
@ -156,16 +164,6 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void onDispatchConnectionSucceed(){
|
|
||||||
|
|
||||||
CIMPushManager.setAccount(context);
|
|
||||||
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP,false);
|
|
||||||
|
|
||||||
onConnectionSucceed();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void onSentSucceed(SentBody body){}
|
private void onSentSucceed(SentBody body){}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -39,6 +39,7 @@ public class CIMPushManager {
|
|||||||
public static void init(Context context,String ip,int port){
|
public static void init(Context context,String ip,int port){
|
||||||
|
|
||||||
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, false);
|
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, false);
|
||||||
|
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, false);
|
||||||
|
|
||||||
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
||||||
serviceIntent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_HOST, ip);
|
serviceIntent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_HOST, ip);
|
||||||
@ -51,6 +52,14 @@ public class CIMPushManager {
|
|||||||
|
|
||||||
protected static void init(Context context){
|
protected static void init(Context context){
|
||||||
|
|
||||||
|
boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP);
|
||||||
|
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
|
||||||
|
|
||||||
|
if(isManualStop || isManualDestory)
|
||||||
|
{
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
String host = CIMDataConfig.getString(context, CIMDataConfig.KEY_CIM_SERVIER_HOST);
|
String host = CIMDataConfig.getString(context, CIMDataConfig.KEY_CIM_SERVIER_HOST);
|
||||||
int port =CIMDataConfig.getInt(context, CIMDataConfig.KEY_CIM_SERVIER_PORT);
|
int port =CIMDataConfig.getInt(context, CIMDataConfig.KEY_CIM_SERVIER_PORT);
|
||||||
|
|
||||||
@ -65,8 +74,11 @@ public class CIMPushManager {
|
|||||||
*/
|
*/
|
||||||
public static void setAccount(Context context,String account){
|
public static void setAccount(Context context,String account){
|
||||||
|
|
||||||
|
|
||||||
|
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, false);
|
||||||
|
|
||||||
if(account==null || account.trim().length()==0)
|
if(account==null || account.trim().length()==0)
|
||||||
{
|
{
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, account);
|
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, account);
|
||||||
@ -93,14 +105,13 @@ public class CIMPushManager {
|
|||||||
|
|
||||||
protected static void setAccount(Context context){
|
protected static void setAccount(Context context){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String account = CIMDataConfig.getString(context,CIMDataConfig.KEY_ACCOUNT);
|
String account = CIMDataConfig.getString(context,CIMDataConfig.KEY_ACCOUNT);
|
||||||
setAccount(context,account);
|
setAccount(context,account);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void clearAccount(Context context){
|
|
||||||
|
|
||||||
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送一个CIM请求
|
* 发送一个CIM请求
|
||||||
@ -127,13 +138,13 @@ public class CIMPushManager {
|
|||||||
*/
|
*/
|
||||||
public static void stop(Context context){
|
public static void stop(Context context){
|
||||||
|
|
||||||
|
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, true);
|
||||||
|
|
||||||
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
|
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
|
||||||
if(isManualDestory){
|
if(isManualDestory){
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, true);
|
|
||||||
|
|
||||||
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
||||||
serviceIntent.putExtra(SERVICE_ACTION, ACTION_DISCONNECTION);
|
serviceIntent.putExtra(SERVICE_ACTION, ACTION_DISCONNECTION);
|
||||||
context.startService(serviceIntent);
|
context.startService(serviceIntent);
|
||||||
@ -172,12 +183,7 @@ public class CIMPushManager {
|
|||||||
setAccount(context);
|
setAccount(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void detectIsConnected(Context context){
|
||||||
/**
|
|
||||||
* 异步获取与服务端连接状态,将会在广播中收到onConnectionStatus(boolean f)
|
|
||||||
* @param context
|
|
||||||
*/
|
|
||||||
public static void detectIsConnected(Context context){
|
|
||||||
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
||||||
serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION_STATUS);
|
serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION_STATUS);
|
||||||
context.startService(serviceIntent);
|
context.startService(serviceIntent);
|
||||||
|
@ -50,5 +50,11 @@ public interface OnCIMMessageListener
|
|||||||
* 连接服务端成功
|
* 连接服务端成功
|
||||||
*/
|
*/
|
||||||
public abstract void onConnectionSucceed();
|
public abstract void onConnectionSucceed();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 连接断开
|
||||||
|
*/
|
||||||
|
public abstract void onConnectionClosed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.farsunset.cim.nio.filter;
|
package com.farsunset.cim.nio.filter;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.nio.charset.Charset;
|
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
|
||||||
@ -23,7 +21,6 @@ import com.farsunset.cim.nio.mutual.SentBody;
|
|||||||
*/
|
*/
|
||||||
public class ServerMessageDecoder extends CumulativeProtocolDecoder {
|
public class ServerMessageDecoder extends CumulativeProtocolDecoder {
|
||||||
|
|
||||||
private final Charset charset = Charset.forName("UTF-8");
|
|
||||||
private IoBuffer buff = IoBuffer.allocate(320).setAutoExpand(true);
|
private IoBuffer buff = IoBuffer.allocate(320).setAutoExpand(true);
|
||||||
@Override
|
@Override
|
||||||
public boolean doDecode(IoSession iosession, IoBuffer iobuffer, ProtocolDecoderOutput out) throws Exception {
|
public boolean doDecode(IoSession iosession, IoBuffer iobuffer, ProtocolDecoderOutput out) throws Exception {
|
||||||
@ -46,14 +43,14 @@ public class ServerMessageDecoder extends CumulativeProtocolDecoder {
|
|||||||
buff.flip();
|
buff.flip();
|
||||||
byte[] bytes = new byte[buff.limit()];
|
byte[] bytes = new byte[buff.limit()];
|
||||||
buff.get(bytes);
|
buff.get(bytes);
|
||||||
String message = new String(bytes, charset);
|
String message = new String(bytes, "UTF-8");
|
||||||
buff.clear();
|
buff.clear();
|
||||||
|
|
||||||
SentBody body = new SentBody();
|
SentBody body = new SentBody();
|
||||||
|
|
||||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||||
DocumentBuilder builder = factory.newDocumentBuilder();
|
DocumentBuilder builder = factory.newDocumentBuilder();
|
||||||
Document doc = builder.parse(new ByteArrayInputStream(message.getBytes(charset)));
|
Document doc = builder.parse(new ByteArrayInputStream(message.getBytes("UTF-8")));
|
||||||
body.setKey(doc.getElementsByTagName("key").item(0).getTextContent());
|
body.setKey(doc.getElementsByTagName("key").item(0).getTextContent());
|
||||||
NodeList items = doc.getElementsByTagName("data").item(0).getChildNodes();
|
NodeList items = doc.getElementsByTagName("data").item(0).getChildNodes();
|
||||||
for (int i = 0; i < items.getLength(); i++) {
|
for (int i = 0; i < items.getLength(); i++) {
|
||||||
|
Binary file not shown.
BIN
cim_for_mina/mchat-simple/libs/cim-core.1.5.jar
Normal file
BIN
cim_for_mina/mchat-simple/libs/cim-core.1.5.jar
Normal file
Binary file not shown.
@ -56,6 +56,16 @@ public abstract class CIMMonitorActivity extends Activity implements OnCIMMess
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与服务端断开连接时回调,不要在里面做连接服务端的操作
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnectionClosed() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 连接服务端成功时回调
|
||||||
|
*/
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConnectionSucceed() {}
|
public void onConnectionSucceed() {}
|
||||||
|
@ -12,9 +12,9 @@ package com.farsunset.ichat.example.app;
|
|||||||
public interface Constant {
|
public interface Constant {
|
||||||
|
|
||||||
//服务端web地址
|
//服务端web地址
|
||||||
public static final String SERVER_URL = "http://192.168.0.107:8080/ichat-server";
|
public static final String SERVER_URL = "http://10.0.0.127:8080/ichat-server";
|
||||||
//服务端IP地址
|
//服务端IP地址
|
||||||
public static final String CIM_SERVER_HOST = "192.168.0.107";
|
public static final String CIM_SERVER_HOST = "10.0.0.127";
|
||||||
|
|
||||||
//注意,这里的端口不是tomcat的端口,CIM端口在服务端spring-cim.xml中配置的,没改动就使用默认的23456
|
//注意,这里的端口不是tomcat的端口,CIM端口在服务端spring-cim.xml中配置的,没改动就使用默认的23456
|
||||||
public static final int CIM_SERVER_PORT = 23456;
|
public static final int CIM_SERVER_PORT = 23456;
|
||||||
|
@ -101,4 +101,13 @@ public final class CustomCIMMessageReceiver extends CIMEnventListenerReceiver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnectionClosed() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
for (int index = 0 ;index<CIMListenerManager.getCIMListeners().size();index++) {
|
||||||
|
CIMListenerManager.getCIMListeners().get(index).onConnectionClosed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
|
|
||||||
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_CLOSED))
|
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_CLOSED))
|
||||||
{
|
{
|
||||||
onConnectionClosed();
|
dispatchConnectionClosed();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_FAILED))
|
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_FAILED))
|
||||||
@ -48,7 +48,7 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
|
|
||||||
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_SUCCESS))
|
if(it.getAction().equals(CIMConnectorManager.ACTION_CONNECTION_SUCCESS))
|
||||||
{
|
{
|
||||||
onDispatchConnectionSucceed();
|
dispatchConnectionSucceed();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(it.getAction().equals(CIMConnectorManager.ACTION_MESSAGE_RECEIVED))
|
if(it.getAction().equals(CIMConnectorManager.ACTION_MESSAGE_RECEIVED))
|
||||||
@ -84,6 +84,18 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void dispatchConnectionClosed() {
|
||||||
|
|
||||||
|
if(CIMConnectorManager.netWorkAvailable(context))
|
||||||
|
{
|
||||||
|
CIMPushManager.init(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
onConnectionClosed();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected boolean isInBackground(Context context) {
|
protected boolean isInBackground(Context context) {
|
||||||
List<RunningTaskInfo> tasksInfo = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1);
|
List<RunningTaskInfo> tasksInfo = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1);
|
||||||
if (tasksInfo.size() > 0) {
|
if (tasksInfo.size() > 0) {
|
||||||
@ -97,26 +109,22 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onConnectionClosed(){
|
|
||||||
|
|
||||||
|
|
||||||
boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP);
|
|
||||||
|
|
||||||
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
|
|
||||||
|
|
||||||
if(CIMConnectorManager.netWorkAvailable(context) && !isManualStop && !isManualDestory)
|
|
||||||
{
|
|
||||||
CIMPushManager.init(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onConnectionFailed(Exception e){
|
private void onConnectionFailed(Exception e){
|
||||||
|
|
||||||
if(CIMConnectorManager.netWorkAvailable(context))
|
if(CIMConnectorManager.netWorkAvailable(context))
|
||||||
{
|
{
|
||||||
CIMPushManager.init(context);
|
CIMPushManager.init(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void dispatchConnectionSucceed() {
|
||||||
|
|
||||||
|
CIMPushManager.setAccount(context);
|
||||||
|
onConnectionSucceed();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void onUncaughtException(Throwable arg0) {}
|
private void onUncaughtException(Throwable arg0) {}
|
||||||
|
|
||||||
@ -156,16 +164,6 @@ public abstract class CIMEnventListenerReceiver extends BroadcastReceiver impl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void onDispatchConnectionSucceed(){
|
|
||||||
|
|
||||||
CIMPushManager.setAccount(context);
|
|
||||||
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP,false);
|
|
||||||
|
|
||||||
onConnectionSucceed();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void onSentSucceed(SentBody body){}
|
private void onSentSucceed(SentBody body){}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -2,6 +2,7 @@ package com.farsunset.cim.client.android;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import com.farsunset.cim.nio.constant.CIMConstant;
|
import com.farsunset.cim.nio.constant.CIMConstant;
|
||||||
import com.farsunset.cim.nio.mutual.SentBody;
|
import com.farsunset.cim.nio.mutual.SentBody;
|
||||||
|
|
||||||
@ -38,6 +39,7 @@ public class CIMPushManager {
|
|||||||
public static void init(Context context,String ip,int port){
|
public static void init(Context context,String ip,int port){
|
||||||
|
|
||||||
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, false);
|
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, false);
|
||||||
|
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, false);
|
||||||
|
|
||||||
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
||||||
serviceIntent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_HOST, ip);
|
serviceIntent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_HOST, ip);
|
||||||
@ -50,6 +52,14 @@ public class CIMPushManager {
|
|||||||
|
|
||||||
protected static void init(Context context){
|
protected static void init(Context context){
|
||||||
|
|
||||||
|
boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP);
|
||||||
|
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
|
||||||
|
|
||||||
|
if(isManualStop || isManualDestory)
|
||||||
|
{
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
String host = CIMDataConfig.getString(context, CIMDataConfig.KEY_CIM_SERVIER_HOST);
|
String host = CIMDataConfig.getString(context, CIMDataConfig.KEY_CIM_SERVIER_HOST);
|
||||||
int port =CIMDataConfig.getInt(context, CIMDataConfig.KEY_CIM_SERVIER_PORT);
|
int port =CIMDataConfig.getInt(context, CIMDataConfig.KEY_CIM_SERVIER_PORT);
|
||||||
|
|
||||||
@ -64,6 +74,9 @@ public class CIMPushManager {
|
|||||||
*/
|
*/
|
||||||
public static void setAccount(Context context,String account){
|
public static void setAccount(Context context,String account){
|
||||||
|
|
||||||
|
|
||||||
|
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, false);
|
||||||
|
|
||||||
if(account==null || account.trim().length()==0)
|
if(account==null || account.trim().length()==0)
|
||||||
{
|
{
|
||||||
return ;
|
return ;
|
||||||
@ -92,14 +105,13 @@ public class CIMPushManager {
|
|||||||
|
|
||||||
protected static void setAccount(Context context){
|
protected static void setAccount(Context context){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String account = CIMDataConfig.getString(context,CIMDataConfig.KEY_ACCOUNT);
|
String account = CIMDataConfig.getString(context,CIMDataConfig.KEY_ACCOUNT);
|
||||||
setAccount(context,account);
|
setAccount(context,account);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void clearAccount(Context context){
|
|
||||||
|
|
||||||
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送一个CIM请求
|
* 发送一个CIM请求
|
||||||
@ -126,13 +138,13 @@ public class CIMPushManager {
|
|||||||
*/
|
*/
|
||||||
public static void stop(Context context){
|
public static void stop(Context context){
|
||||||
|
|
||||||
|
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, true);
|
||||||
|
|
||||||
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
|
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
|
||||||
if(isManualDestory){
|
if(isManualDestory){
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, true);
|
|
||||||
|
|
||||||
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
||||||
serviceIntent.putExtra(SERVICE_ACTION, ACTION_DISCONNECTION);
|
serviceIntent.putExtra(SERVICE_ACTION, ACTION_DISCONNECTION);
|
||||||
context.startService(serviceIntent);
|
context.startService(serviceIntent);
|
||||||
@ -171,11 +183,6 @@ public class CIMPushManager {
|
|||||||
setAccount(context);
|
setAccount(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步获取与服务端连接状态,将会在广播中收到onConnectionStatus(boolean f)
|
|
||||||
* @param context
|
|
||||||
*/
|
|
||||||
public void detectIsConnected(Context context){
|
public void detectIsConnected(Context context){
|
||||||
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
Intent serviceIntent = new Intent(context, CIMPushService.class);
|
||||||
serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION_STATUS);
|
serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION_STATUS);
|
||||||
|
@ -50,5 +50,11 @@ public interface OnCIMMessageListener
|
|||||||
* 连接服务端成功
|
* 连接服务端成功
|
||||||
*/
|
*/
|
||||||
public abstract void onConnectionSucceed();
|
public abstract void onConnectionSucceed();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 连接断开
|
||||||
|
*/
|
||||||
|
public abstract void onConnectionClosed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Binary file not shown.
BIN
cim_for_netty/mchat-simple/libs/cim-core.1.5.jar
Normal file
BIN
cim_for_netty/mchat-simple/libs/cim-core.1.5.jar
Normal file
Binary file not shown.
@ -70,8 +70,15 @@ public abstract class CIMMonitorActivity extends Activity implements OnCIMMess
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与服务端断开连接时回调,不要再里面做连接服务端的操作
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onConnectionClosed(){};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与服务端断开连接时成功时回调
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onConnectionSucceed() {}
|
public void onConnectionSucceed() {}
|
||||||
@Override
|
@Override
|
||||||
|
@ -12,9 +12,9 @@ package com.farsunset.ichat.example.app;
|
|||||||
public interface Constant {
|
public interface Constant {
|
||||||
|
|
||||||
//服务端web地址
|
//服务端web地址
|
||||||
public static final String SERVER_URL = "http://10.0.0.102:8080/ichat-server";
|
public static final String SERVER_URL = "http://10.0.0.127:8080/ichat-server";
|
||||||
//服务端IP地址
|
//服务端IP地址
|
||||||
public static final String CIM_SERVER_HOST = "10.0.0.102";
|
public static final String CIM_SERVER_HOST = "10.0.0.127";
|
||||||
|
|
||||||
//注意,这里的端口不是tomcat的端口,CIM端口在服务端spring-cim.xml中配置的,没改动就使用默认的23456
|
//注意,这里的端口不是tomcat的端口,CIM端口在服务端spring-cim.xml中配置的,没改动就使用默认的23456
|
||||||
public static final int CIM_SERVER_PORT = 23456;
|
public static final int CIM_SERVER_PORT = 23456;
|
||||||
|
@ -99,6 +99,11 @@ public final class CustomCIMMessageReceiver extends CIMEnventListenerReceiver {
|
|||||||
CIMListenerManager.getCIMListeners().get(index).onConnectionStatus(arg0);
|
CIMListenerManager.getCIMListeners().get(index).onConnectionStatus(arg0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public void onConnectionClosed() {
|
||||||
|
for (int index = 0 ;index<CIMListenerManager.getCIMListeners().size();index++) {
|
||||||
|
CIMListenerManager.getCIMListeners().get(index).onConnectionClosed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user