Update CIMPushManager.java

This commit is contained in:
远方夕阳 2014-07-10 17:49:37 +08:00
parent 7187bcc38f
commit 1e9e94a784

View File

@ -1,183 +1,183 @@
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);
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){
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.putString(context,CIMDataConfig.KEY_ACCOUNT, account); CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, account);
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
if(isManualDestory || account==null){ if(isManualDestory || account==null){
return ; return ;
} }
String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
SentBody sent = new SentBody(); SentBody sent = new SentBody();
sent.setKey(CIMConstant.RequestKey.CLIENT_BIND); sent.setKey(CIMConstant.RequestKey.CLIENT_BIND);
sent.put("account", account); sent.put("account", account);
sent.put("deviceId",imei); sent.put("deviceId",imei);
sent.put("channel", "android"); sent.put("channel", "android");
sent.put("device",android.os.Build.MODEL); sent.put("device",android.os.Build.MODEL);
sendRequest(context,sent); sendRequest(context,sent);
} }
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){ protected static void clearAccount(Context context){
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null); CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null);
} }
/** /**
* 发送一个CIM请求 * 发送一个CIM请求
* @param context * @param context
* @body * @body
*/ */
public static void sendRequest(Context context,SentBody body){ public static void sendRequest(Context context,SentBody body){
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
if(isManualDestory){ if(isManualDestory){
return ; return ;
} }
Intent serviceIntent = new Intent(context, CIMPushService.class); Intent serviceIntent = new Intent(context, CIMPushService.class);
serviceIntent.putExtra(KEY_SEND_BODY, body); serviceIntent.putExtra(KEY_SEND_BODY, body);
serviceIntent.putExtra(SERVICE_ACTION, ACTION_SENDREQUEST); serviceIntent.putExtra(SERVICE_ACTION, ACTION_SENDREQUEST);
context.startService(serviceIntent); context.startService(serviceIntent);
} }
/** /**
* 停止接受推送将会退出当前账号登录端口与服务端的连接 * 停止接受推送将会退出当前账号登录端口与服务端的连接
* @param context * @param context
*/ */
public static void stop(Context context){ public static void stop(Context context){
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); 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);
} }
/** /**
* 完全销毁CIM一般用于完全退出程序调用resume将不能恢复 * 完全销毁CIM一般用于完全退出程序调用resume将不能恢复
* @param context * @param context
*/ */
public static void destory(Context context){ public static void destory(Context context){
CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, true); CIMDataConfig.putBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED, true);
CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null); CIMDataConfig.putString(context,CIMDataConfig.KEY_ACCOUNT, null);
Intent serviceIntent = new Intent(context, CIMPushService.class); Intent serviceIntent = new Intent(context, CIMPushService.class);
serviceIntent.putExtra(SERVICE_ACTION, ACTION_DESTORY); serviceIntent.putExtra(SERVICE_ACTION, ACTION_DESTORY);
context.startService(serviceIntent); context.startService(serviceIntent);
} }
/** /**
* 重新恢复接收推送重新连接服务端并登录当前账号 * 重新恢复接收推送重新连接服务端并登录当前账号
* @param context * @param context
*/ */
public static void resume(Context context){ public static void resume(Context context){
boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED); boolean isManualDestory = CIMDataConfig.getBoolean(context,CIMDataConfig.KEY_CIM_DESTORYED);
if(isManualDestory){ if(isManualDestory){
return ; return ;
} }
setAccount(context); setAccount(context);
} }
/** /**
* 异步获取与服务端连接状态,将会在广播中收到onConnectionStatusboolean f * 异步获取与服务端连接状态,将会在广播中收到onConnectionStatusboolean f
* @param context * @param context
*/ */
public void detectIsConnected(Context 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);
} }
} }