GoBelieve Android SDK接入备忘

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之前必须要设置用户的accessToken,token是由第三方应用服务器调用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);
时间: 2024-10-10 00:28:37

GoBelieve Android SDK接入备忘的相关文章

GoBelieve IOS SDK接入备忘

项目配置 在工程target的"Build Settings"中,找到"Linking"的"Other Linker Flags",添加参数-ObjC. IMSDK imsdk只包含消息基础通讯功能 初始化IM 启动im服务只需要设置用户的access token,调用启动接口并添加消息的监听对象. [IMService instance].deviceID = [[[UIDevice currentDevice] identifierForVe

GoBelieve JS IM SDK接入备忘

类IMService 构造函数 参数说明: * `observer` 回调对象(可选) 设置当前用户的access token 属性名:String accessToken 功能:在调用start之前必须要设置用户的accessToken,token是由第三方应用服务器调用IM服务器RestAPI所得. 开始接受消息 方法名:start 功能:用户登陆成功后,连接im服务器来接受在线消息. 返回值:无返回值 停止接受消息 方法名:stop 功能:用户注销后,断开和im服务器的连接,从而终止接受在

Unity3d Android SDK接入解析(四)通用的Android SDK接入中间件

一.前言 接入Android SDK正式告一段落,在这段时间里面,依次接入了华为.应用宝.小米.360等等大大小小十来个SDK,也算对Unity接入渠道SDK有了较为全面的理解,对各个渠道的坑也算深有体会....在接入过程中时间比较紧张,没办法抽空来进行总结深思.今天正好有空,便对之前的接入SDK的代码进行了一次重构,写了一个比较通用的Unity接入Android SDK的中间件,前人栽树,后人乘凉. 进入正题 如果有对一些只是有疑问的,可以看看我之前的三篇文章: 传送门: Unity3d An

Unity3d Android SDK接入解析(二)Unity3d Android SDK的设计与两种接入方式

一.前言 上篇说清楚了Unity和Android调用的方式,但很多实际接入的部分没有讲的很详细,因为重头在这篇,会详细讲述具体接入Android SDK的方式,和怎么去做一个方便Unity接入的SDK. 传送门: 前篇:Unity3d 与 Android之间的互相调用 http://blog.csdn.net/yang8456211/article/details/51331358 后篇:Unity3d Android SDK接入解析(三)接入Android Library的理解 http://

Unity3d Android SDK接入解析(一)

一.前言 论学习心态: 每当进入一个新的工作环境,处于一种新的领域时,人总是会变得急功近利,特别是当任务紧急时,人总是会想着不断的从网上搜寻答案,不断的去寻问他人,十足的拿来主义,竟没有静下来自己思考与尝试过,回头看来,其实很多东西并没有当初认为的那么复杂,只是少了自己的一些总结和深思. 论问题本身: 关于Unity和Android的互相调用,网上的教程太多了,大同小异,抄来抄去.这次我就尝试着慢慢来,讲讲我的理解(简单的我会一笔带过,网上可以轻松找到答案,就不赘述了),希望大家看的时候并不是秉

Android Studio 技巧备忘

1.日志输入匹配 在日志输入框,点击Edit Filter Configuration 输入syso,并匹配规则 这样就过滤出自己想要的日志 原文地址:https://www.cnblogs.com/jys509/p/11032160.html

〖Android〗dropbear一些操作命令备忘

相关命令行: 1 # 启动dropbear后台运行 2 /data/local/tmp/dropbear 3 -A -N android -I 0 -C passwd -U 1015 -G 1015 -p 2223 4 -R /data/local/tmp/authorized_keys 5 -P /data/local/tmp/dropbear.pid 6 -r /data/local/tmp/dropbear_rsa_host_key 7 -d /data/local/tmp/dropbea

调试android chrome web page简明备忘

必备工具 adb tools.android chrome 先开启手机调试模式 adb forward tcp:9919 localabstract:chromedevtoolsremote 成功会提示 * daemon not running. starting it now on port 5037 * * daemon started successfully * 不成功的话用这个命令再试 adb kill-server 接着打开下面的链接,这里的9919是上面adb命令中指定的 http

SDK接入(2)之Android Google Play内支付(in-app Billing)接入

SDK接入(2)之Android Google Play内支付(in-app Billing)接入 继上篇SDK接入(1)之Android Facebook SDK接入整理完Facebook接入流程之后,再来整理下Google Play in-app Billing支付的接入流程.众所周知,Google Play是Google Android官方的应用商店,也是将应用发布到世界各地一个重要的渠道.支付作为盈利的一个重要手段,可以借助Google in-app Billing api来达到目的.