zoukankan      html  css  js  c++  java
  • 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之前必须要设置用户的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);
  • 相关阅读:
    如何配置透明发光的骚气 vscode —— Jinkey 原创
    JS引用类型总结
    element UI -- 默认样式修改不成功原因
    上传本地Vue项目到github
    网页加载速度优化方法总结
    移动端click时间、touch事件、tap事件详解
    移动端开发用touch事件还是click事件
    禁止网站调用favicon.ico请求
    HTTP里面的响应和请求
    jave script 中this的指向 (六种场景)
  • 原文地址:https://www.cnblogs.com/nuanshou/p/4401105.html
Copyright © 2011-2022 走看看