Android SDK版本

  • 目前SDK只支持Android 2.2或以上版本的手机系统。

AndroidManifest.xml配置

  • 以下配置可以在IMDemo/AndroidManifest.xml 找到并直接拷贝放置进自己的应用工程中的AndroidManifest.xml文件对应的tag中.

  • manifest 标签下添加:

     <!-- 必需: 权限配置 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.BATTERY_STATS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>    <uses-feature android:name="android.hardware.camera" />    <uses-feature android:name="android.hardware.camera.autofocus" />

  • application 标签下添加:

     <!-- 必需: 应用ID(此处的id为您申请的应用id) --> <meta-data     android:name="GOBELIEVE_APPID"     android:value="7" /> <!-- 必需: 应用KEY (此处appkey为您申请的应用密钥)--> <meta-data     android:name="GOBELIEVE_APPKEY"     android:value="HS5NVruwDJxFwUPEdzqo7gBrQCSFsIhA" /> <!-- 必需: 推送页面配置 --> <activity android:name="com.gameservice.sdk.push.ui.SmartPushActivity" /> <!-- 必需: push 服务配置 --> <service     android:name="com.beetle.push.PushService"     android:process=":push" /> <!-- 必需: push 消息接收配置 --> <receiver     android:name="com.beetle.push.PushReceiver"     android:enabled="true"     android:exported="false"     android:priority="90000"     android:process=":push">     <intent-filter>         <action android:name="android.intent.action.PACKAGE_ADDED" />         <action android:name="android.intent.action.PACKAGE_CHANGED" />         <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />         <action android:name="android.intent.action.PACKAGE_INSTALL" />         <action android:name="android.intent.action.PACKAGE_REMOVED" />         <action android:name="android.intent.action.PACKAGE_REPLACED" />         <action android:name="android.intent.action.PACKAGE_RESTARTED" />         <action android:name="android.intent.action.USER_PRESENT" />         <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />         <action android:name="android.intent.action.BOOT_COMPLETED" />     </intent-filter> </receiver>

IMSDK

  • imsdk只包含消息基础通讯功能

初始化IM

  • 在开始IM服务之前需要设置用户accessToken以及添加IMServiceObserver监听状态回调.

      //获取IMService  mIMService = IMService.getInstance();  String androidID = Settings.Secure.getString(this.getContentResolver(),      Settings.Secure.ANDROID_ID);  //设置设备唯一标识,用于多点登录时设备校验  mIMService.setDeviceID(androidID);  //注册回调  mIMService.addObserver(new IMServiceObserver() {  });  //监听网路状态变更  mIMService.registerConnectivityChangeReceiver(getApplicationContext());  //设置推送服务的回调  Push.registerReceiver(new IMsgReceiver{  });  //启动后台推送服务  Push.registerService(getApplicationContext());

用户登录成功后启动IM,设置用户的accesstoken并启动im

     mIMService.setAccessToken(token);     mIMService.start();

用户注销后清空用户的devicetoken并停止IM

     IMApi.unbindDeviceToken(deviceToken, accessToken);     mIMService.setAccessToken("");     mIMService.stop();

应用切到后台暂停IM,此后所有的消息将通过推送通道下发

 mIMService.enterBackground()

应用切到前台恢复IM

    mIMService.enterForeground()

发送消息

  • 启动IM服务设置好用户id之后便可以开始发送消息,消息发送的代码需要在UI线程中调用(消息内容大小限制为4k) :

        //建立消息对象   IMMessage msg = new IMMessage();   //设置发送方id   msg.sender = senderId;   //设置接收方id   msg.receiver = receiverId;   //消息本地id   msg.msgLocalID = msgLocalId;   //设置消息内容   msg.content = "早上好";   IMService.sendPeerMessage(msg);

类IMService

设置当前用户的access token

方法名:public void setAccessToken(String token) 功能:在调用start之前必须要设置用户的accessTokentoken是由第三方应用服务器调用IM服务器RestAPI所得。 参数说明: * token 客户端连接IM服务必须的acessToken 返回值:无返回值

设置当前设备的id

方法名:public void setDeviceID(String deviceID) 功能:设备id可以用户多点登陆的唯一性判断,可选调用 参数说明: *deviceID 设备id 返回值:无返回值

设置观察者

方法名: public void addObserver(IMServiceObserver observer) 功能:设置observer,在observer中处理接受到的消息。 参数说明: * observer 观察者 返回值:无返回值

开始接受消息

方法名:public void start() 功能:用户登陆成功后,连接im服务器来接受在线消息。

停止接受消息

方法名:public void stop() 功能:用户注销后,断开和im服务器的连接,从而终止接受在线消息。

应用进入到前台

方法名:public void enterForeground() 功能:应用进入前台,im服务器将停止将消息推送到通知栏

应用进入到后台

方法名:public void enterBackground() 功能:应用进入后台,im服务器会将将消息推送到通知栏

发送消息

方法名:public boolean sendPeerMessage(IMMessage msg) 功能:发送im消息,如果当前连接处于断开状态,消息会发送失败, 函数返回true,也不能表明服务器已经接收到消息。 参数说明: *msg 消息对象 返回值:boolean

接口IMServiceObserver

连接状态

方法名:public void onConnectState(IMService.ConnectState state) 功能:连接状态变更通知 参数说明: *state 连接的状态 STATE_UNCONNECTED, STATE_CONNECTING, STATE_CONNECTED, STATE_CONNECTFAIL 返回值:无返回值

异地登陆

方法名: public void onLoginPoint(LoginPoint lp) 功能:当前登陆用户在异地登陆 参数说明: *lp 登录点信息 返回值:无返回值

消息

方法名:public void onPeerMessage(IMMessage msg) 功能:接受到一条im消息 参数说明: *msg 消息对象 返回值:无返回值

消息ACK

方法名:public void onPeerMessageACK(int msgLocalID, long uid) 功能:服务器对收到消息的ack,此时这条消息才能标志为发送成功 参数说明: *msgLocalID 消息的本地ID *uid 消息接受者 返回值:无返回值

消息接受者ACK

方法名:public void onPeerMessageRemoteACK(int msgLocalID, long uid) 功能:消息已经被对端接收到。 参数说明: *msgLocalID 消息的本地ID *uid 消息接受者 返回值:无返回值

消息发送失败

方法名:public void onPeerMessageFailure(int msgLocalID, long uid) 功能:消息发出后,未收到服务器的ack,在和服务器的连接断开后,会通知消息发送失败。 参数说明: *msgLocalID 消息的本地ID *uid 消息接受者 返回值:无返回值

类IMApi

设置当前用户的device token

方法名:public boolean bindDeviceToken(byte[] deviceToken, String accessToken) 功能:设置device token后,im服务器会对用户推送离线消息,device token来自于push系统生成。 参数说明: *deviceToken 推送的deviceToken *accessToken 用户当前的accessToken 返回值:boolean 是否设置成功。

清空当前用户关联的device token

方法名:public boolean unbindDeviceToken(byte[] deviceToken, String accessToken) 功能:im服务器不会再对这台设备推送离线消息 参数说明: *deviceToken 推送的deviceToken *accessToken 用户当前的accessToken 返回值:boolean 是否清空成功。

类PushSDK

注册回调

方法名:public void registerReceiver(IMsgReceiver receiver) 功能:回调接口用于接受推送的devicetoken 参数说明: *receiver 回调对象 返回值:无返回值

启动推送服务

方法名:public void registerService(Context context) 功能: 应用启动后,启动推送服务 参数说明: *context 应用的ApplicationContext 返回值:无返回值

接口IMsgReceiver

获得devicetoken

方法名: public void onDeviceToken(byte[] deviceToken) 功能:推送服务注册成功后,将deviceToken通知到应用 参数说明: *deviceToken 用于推送的设备唯一标识 返回值:无返回值

IMKit

  • imkit包含了完整的聊天界面和历史消息的存储

初始化IMKit

  • 除了imsdk必要的初始化动作外,使用imkit需要初始化存储类

      FileCache fc = FileCache.getInstance();  fc.setDir(this.getDir("cache", MODE_PRIVATE));  PeerMessageDB db = PeerMessageDB.getInstance();  db.setDir(this.getDir("peer", MODE_PRIVATE));  mIMService.setPeerMessageHandler(PeerMessageHandler.getInstance());

打开聊天界面

    Intent intent = new Intent(this, IMActivity.class);    intent.putExtra("peer_uid", peerUID);    intent.putExtra("peer_name", peerName);    intent.putExtra("current_uid", currentUID    startActivity(intent);

更多相关文章

  1. Android之UI学习篇七:ImageView实现适屏和裁剪图片的功能
  2. Android 代码自动提示功能
  3. Android——消息机制
  4. android两种方式实现发送短信的功能代码
  5. Android Material Design: NavigationView抽屉导航菜单(策滑功能
  6. Android KitKat 4.4 Wifi移植之AP模式与网络共享功能调试记录
  7. Android Handler 线程消息机制
  8. 【Android】源码分析 - Handler消息机制再梳理
  9. Android Retrofit与Spring后台配合,实现单张、多张图片上传功能

随机推荐

  1. 【移动开发】Android中图片过大造成内存
  2. 狂刷Android范例之4:用代码安装卸载app
  3. android studio sdk更新 (2015-8-5)
  4. 谁说Android不行了,以个人能力的不行来否
  5. Android新手入门2016(6)--客户端编程思想的
  6. Bash脚本之多线程处理
  7. Android天下大乱,Google无法一统山河
  8. 小米手机十月份会有原生 Android 2.3.5
  9. [转载] 我的Android进阶之旅:经典的大牛博
  10. 自己用android做的一个简单的播放器