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);
GoBelieve Android SDK接入备忘的更多相关文章
- GoBelieve IOS SDK接入备忘
项目配置 在工程target的"Build Settings"中,找到"Linking"的"Other Linker Flags",添加参数 ...
- GoBelieve JS IM SDK接入备忘
类IMService 构造函数 参数说明: * `observer` 回调对象(可选) 设置当前用户的access token 属性名:String accessToken 功能:在调用start之前 ...
- Android: 工具使用备忘
Gradle Gradle本地路径设置 如果在AndroidStudio内设置了使用local的Gradle路径,就直接放那边,啥问题都不会有.如果使用推荐的设置,那么更新的时候很有可能会有问题. 在 ...
- Android Studio 技巧备忘
1.日志输入匹配 在日志输入框,点击Edit Filter Configuration 输入syso,并匹配规则 这样就过滤出自己想要的日志
- argis android sdk配置备忘一下
ArcGIS RuntimeAndroid SDK100.1.0 1.在线配置(只有两处) 在project工程中的gradle添加 maven { url 'https://esri.bintray ...
- SDK接入(2)之Android Google Play内支付(in-app Billing)接入
SDK接入(2)之Android Google Play内支付(in-app Billing)接入 继上篇SDK接入(1)之Android Facebook SDK接入整理完Facebook接入流程之 ...
- SDK接入(1)之Android Facebook SDK接入
SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...
- Unity - 接入Android SDK
在网络上,关于Unity与Android如何进行交互,雨松MOMO大神已经有两篇文章简单介绍了如何操作(1)Unity3D研究院之打开Activity与调用JAVA代码传递参数(2)Unity3D研究 ...
- unity工程接入Android sdk后真机测试解锁屏后退出的解决
unity工程接入如91.移动支付等Android sdk后,真机运行尤其是在4.0+以上坏境,往往会出现解锁屏后退出的情况,解决办法如下: 可以在AndroidManifest.xml中所有的con ...
随机推荐
- Nginx反向代理、负载均衡功能
环境: [root@db02 ~]# uname -a Linux db02 -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 x86_64 GNU/Li ...
- Oracle中scott用户下基本表练习SQL语句
--选择部门中30的雇员SELECT * from emp where DEPTNO=30;--列出所有办事员的姓名.部门.编号--采用内连接方式,也就是等值链接,也是最常用的链接SELECT ena ...
- mysql 语句学习一 关于系统信息的查询
首先说一下,SQL语句是不区分大小写的. 1.SELECT VERSION(); -- 查询当前版本号 2.SELECT CURRENT_TIME(); -- 查询当前时间 3.S ...
- vim-plug
vim包管理器vim-plug 安装 curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent. ...
- 移动端点击a链接出现蓝色背景问题解决
a:link, a:active, a:visited, a:hover { background: none; -webkit-tap-highlight-color: rgba(0,0,0,0); ...
- SharePoint 2013 - Client Side Rendering
1. Client side rendering 代码结构为: (function () { // Create object that have the context information ab ...
- 机器学习(一)——K-近邻(KNN)算法
最近在看<机器学习实战>这本书,因为自己本身很想深入的了解机器学习算法,加之想学python,就在朋友的推荐之下选择了这本书进行学习. 一 . K-近邻算法(KNN)概述 最简单最初级的 ...
- 【Linux】Linux远程登陆
登录任务 Windows主机--远程登录--Linux主机 一.登陆前提准备 1.1 确保网络通畅 确保从Windows 能够Ping通Linux 1.2 关闭Linux防火墙 //前提:以root管 ...
- user purchase behavior:
user purchase behavior: 参考网址: online shopping frequent https://www.bigcommerce.com/blog/ecommerce-tr ...
- python大数据
http://blog.csdn.net/xnby/article/details/50782913 一句话总结:spark是一个基于内存的大数据计算框架, 上层包括了:Spark SQL类似Hive ...