接入融云
融云SDK满足 App 内的社交沟通需求,提供单群聊、超级群等多种聊天模式,支持红包、图片、语音和小视频,实时消息推送,高度自定义界面,高清音视频通话,有效提升用户粘性和活跃度,所以我用融云。
添加应用
要接入第三方 SDK 都要在其开发者平台注册账号,添加应用,审核获取 appkey secretkey。这样子的流程。然后去看他的 SDK 接入指南。
开始
下载融云 SDK,看你功能需要选择下载。
http://www.rongcloud.cn/downloads
新建项目,引入融云远程库,加入第三方库
implementation 'cn.rongcloud.android:IMKit:2.8.6'
implementation 'cn.rongcloud.android:IMLib:2.8.6'
把 下载好的 SDK 中 libs 里面的文件加入到项目lib里面(armeabi里面的libpush.so
以及libsqlite.so)
新建src/main/assets/ 并加入 SDK 里面的 armeabi/push_deamon
Androidmanifest.xml
加入权限
新建 Application 在 oncreate 初始化 sdk
因为接入了融云 SDK会有主进程,和推送进程,那我们在主进程进行初始化
if (applicationInfo.packageName == getCurProcessName(applicationContext)) {
try {
RongIM.init(this,Constant.APP_KEY)
} catch (e: Exception) {
e.printStackTrace()
} finally {
}
}
然后调用 RongIM.connect,在成功的回调进行内容提供者(设置头像和昵称),token要在后台获取,测试的时候你可以在 应用里面获取 token
RongIM.connect(token, object : RongIMClient.ConnectCallback() {
override fun onTokenIncorrect() {
//get token again
}
override fun onSuccess(userid: String) {
progress.visibility = View.GONE
connectBtn.text = "欢迎回来$name$userId"
RongIM.getInstance().setCurrentUserInfo(UserInfo(userId,name, Uri.parse(image)))
RongIM.getInstance().setMessageAttachedUserInfo(true)
//用户内容提供者(userid+username+image)
}
override fun onError(errorCode: RongIMClient.ErrorCode) {
//Ooooop
}
}
创建会话列表
�创建ConversationListActivity ,在布局文件加入
再注册这个activity,因为是隐式跳转这个 activity 注意 data 的 host 是写自己包名
创建聚合会话列表
创建 SubConversationListActivity ,在其布局文件加入
再注册这个activity,因为是隐式跳转这个 activity 注意 data 的 host 是写自己包名
创建会话
创建 ConversationActivity ,在其布局文件加入
再注册这个activity,因为是隐式跳转这个 activity 注意 data 的 host 是写自己包名
打开会话列表
private fun startConversationList() {
val map = HashMap()
map.put(Conversation.ConversationType.PRIVATE.getName(), false) // 会话列表需要显示私聊会话, 第二个参数 true 代表私聊会话需要聚合显示
map.put(Conversation.ConversationType.GROUP.getName(), false) // 会话列表需要显示群组会话, 第二个参数 false 代表群组会话不需要聚合显示
RongIM.getInstance().startConversationList(this@MainActivity, map)
}
创建私聊会话
RongIM.getInstance().startPrivateChat(this@MainActivity, "123456", "userid")
项目地址 https://github.com/gdmec07120731/IMProject
常见问题
connect 无回调,报找不到 libsqlite.so 异常
解决方法 http://support.rongcloud.cn/kb/NTQw