Update CIMPushManager.java

This commit is contained in:
远方夕阳 2014-09-04 14:36:53 +08:00
parent d792807714
commit 9e3a1f537b

View File

@ -1,192 +1,189 @@
package com.farsunset.cim.client.android; 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;
/** /**
* CIM 功能接口 * CIM 功能接口
* *
* @author 3979434@qq.com * @author 3979434@qq.com
*/ */
public class CIMPushManager { public class CIMPushManager {
static String ACTION_CONNECTION ="ACTION_CONNECTION"; static String ACTION_CONNECTION ="ACTION_CONNECTION";
static String ACTION_CONNECTION_STATUS ="ACTION_CONNECTION_STATUS"; static String ACTION_CONNECTION_STATUS ="ACTION_CONNECTION_STATUS";
static String ACTION_SENDREQUEST ="ACTION_SENDREQUEST"; static String ACTION_SENDREQUEST ="ACTION_SENDREQUEST";
static String ACTION_DISCONNECTION ="ACTION_DISSENDREQUEST"; static String ACTION_DISCONNECTION ="ACTION_DISSENDREQUEST";
static String ACTION_DESTORY ="ACTION_DESTORY"; static String ACTION_DESTORY ="ACTION_DESTORY";
static String SERVICE_ACTION ="SERVICE_ACTION"; static String SERVICE_ACTION ="SERVICE_ACTION";
static String KEY_SEND_BODY ="KEY_SEND_BODY"; static String KEY_SEND_BODY ="KEY_SEND_BODY";
static String KEY_CIM_CONNECTION_STATUS ="KEY_CIM_CONNECTION_STATUS"; static String KEY_CIM_CONNECTION_STATUS ="KEY_CIM_CONNECTION_STATUS";
/** /**
* 初始化,连接服务端在程序启动页或者 在Application里调用 * 初始化,连接服务端在程序启动页或者 在Application里调用
* @param context * @param context
* @param ip * @param ip
* @param port * @param port
*/ */
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); 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);
serviceIntent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_PORT, port); serviceIntent.putExtra(CIMDataConfig.KEY_CIM_SERVIER_PORT, port);
serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION); serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION);
context.startService(serviceIntent); context.startService(serviceIntent);
CIMDataConfig.putString(context, CIMDataConfig.KEY_CIM_SERVIER_HOST, ip); CIMDataConfig.putString(context, CIMDataConfig.KEY_CIM_SERVIER_HOST, ip);
CIMDataConfig.putInt(context, CIMDataConfig.KEY_CIM_SERVIER_PORT, port); CIMDataConfig.putInt(context, CIMDataConfig.KEY_CIM_SERVIER_PORT, port);
} }
protected static void init(Context context){ protected static void init(Context context){
boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP); boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP);
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
if(isManualStop || isManualDestory) if(isManualStop || isManualDestory)
{ {
return ; 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);
init(context,host,port); init(context,host,port);
} }
/** /**
* 设置一个账号登录到服务端 * 设置一个账号登录到服务端
* @param account 用户唯一ID * @param account 用户唯一ID
*/ */
public static void setAccount(Context context,String account){ public static void setAccount(Context context,String account){
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, false); boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
if(isManualDestory || account==null || account.trim().length()==0)
if(account==null || account.trim().length()==0) {
{ return ;
return ; }
}
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, account); CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, false);
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, account);
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
if(isManualDestory || account==null){ SentBody sent = new SentBody();
return ; sent.setKey(CIMConstant.RequestKey.CLIENT_BIND);
} sent.put("account", account);
sent.put("deviceId",imei);
sent.put("channel", "android");
String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); sent.put("device",android.os.Build.MODEL);
SentBody sent = new SentBody();
sent.setKey(CIMConstant.RequestKey.CLIENT_BIND); sendRequest(context,sent);
sent.put("account", account);
sent.put("deviceId",imei);
sent.put("channel", "android"); }
sent.put("device",android.os.Build.MODEL);
protected static void setAccount(Context context){
sendRequest(context,sent);
} String account = CIMDataConfig.getString(context,CIMDataConfig.KEY_ACCOUNT);
setAccount(context,account);
protected static void setAccount(Context context){ }
String account = CIMDataConfig.getString(context,CIMDataConfig.KEY_ACCOUNT); /**
setAccount(context,account); * 发送一个CIM请求
} * @param context
* @body
*/
public static void sendRequest(Context context,SentBody body){
/**
* 发送一个CIM请求 boolean isManualStop = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_MANUAL_STOP);
* @param context boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
* @body
*/ if(isManualStop || isManualDestory)
public static void sendRequest(Context context,SentBody body){ {
return ;
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); }
if(isManualDestory){
return ; Intent serviceIntent = new Intent(context, CIMPushService.class);
} serviceIntent.putExtra(KEY_SEND_BODY, body);
serviceIntent.putExtra(SERVICE_ACTION, ACTION_SENDREQUEST);
Intent serviceIntent = new Intent(context, CIMPushService.class); context.startService(serviceIntent);
serviceIntent.putExtra(KEY_SEND_BODY, body);
serviceIntent.putExtra(SERVICE_ACTION, ACTION_SENDREQUEST); }
context.startService(serviceIntent);
/**
} * 停止接受推送将会退出当前账号登录端口与服务端的连接
* @param context
/** */
* 停止接受推送将会退出当前账号登录端口与服务端的连接 public static void stop(Context context){
* @param context
*/ boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
public static void stop(Context context){ if(isManualDestory){
return ;
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, true); }
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_MANUAL_STOP, true);
if(isManualDestory){
return ; Intent serviceIntent = new Intent(context, CIMPushService.class);
} serviceIntent.putExtra(SERVICE_ACTION, ACTION_DISCONNECTION);
context.startService(serviceIntent);
Intent serviceIntent = new Intent(context, CIMPushService.class);
serviceIntent.putExtra(SERVICE_ACTION, ACTION_DISCONNECTION); }
context.startService(serviceIntent);
} /**
* 完全销毁CIM一般用于完全退出程序调用resume将不能恢复
* @param context
/** */
* 完全销毁CIM一般用于完全退出程序调用resume将不能恢复 public static void destory(Context context){
* @param context
*/
public static void destory(Context context){ CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, true);
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null);
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, true); Intent serviceIntent = new Intent(context, CIMPushService.class);
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null); serviceIntent.putExtra(SERVICE_ACTION, ACTION_DESTORY);
context.startService(serviceIntent);
Intent serviceIntent = new Intent(context, CIMPushService.class);
serviceIntent.putExtra(SERVICE_ACTION, ACTION_DESTORY); }
context.startService(serviceIntent);
} /**
* 重新恢复接收推送重新连接服务端并登录当前账号
* @param context
/** */
* 重新恢复接收推送重新连接服务端并登录当前账号 public static void resume(Context context){
* @param context
*/ boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
public static void resume(Context context){ if(isManualDestory){
return ;
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); }
if(isManualDestory){
return ; setAccount(context);
} }
setAccount(context); public void detectIsConnected(Context context){
} Intent serviceIntent = new Intent(context, CIMPushService.class);
serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION_STATUS);
public void detectIsConnected(Context context){ context.startService(serviceIntent);
Intent serviceIntent = new Intent(context, CIMPushService.class); }
serviceIntent.putExtra(SERVICE_ACTION, ACTION_CONNECTION_STATUS);
context.startService(serviceIntent);
}
} }