前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2018 融云集成

2018 融云集成

作者头像
ppjun
发布2018-09-05 12:01:28
1.1K0
发布2018-09-05 12:01:28
举报
文章被收录于专栏:ppjun专栏ppjun专栏
接入融云

融云SDK满足 App 内的社交沟通需求,提供单群聊、超级群等多种聊天模式,支持红包、图片、语音和小视频,实时消息推送,高度自定义界面,高清音视频通话,有效提升用户粘性和活跃度,所以我用融云。

添加应用

要接入第三方 SDK 都要在其开发者平台注册账号,添加应用,审核获取 appkey secretkey。这样子的流程。然后去看他的 SDK 接入指南。

开始

下载融云 SDK,看你功能需要选择下载。 http://www.rongcloud.cn/downloads

新建项目,引入融云远程库,加入第三方库

代码语言:javascript
复制
    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 加入权限

代码语言:javascript
复制
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 获取机型信息权限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />

    <!-- 查看 Wi-Fi 状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 查看网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 录音 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- 控制振动器 -->
    <uses-permission android:name="android.permission.VIBRATE" />
    <!-- 防止设备休眠 -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
    <!-- 获取联系人信息,demo 中演示发送通讯录消息 -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <!-- ⼩米 配置开始 < -->
    <permission
        android:name="cn.rongcloud.im.permission.MIPUSH_RECEIVE"
        android:protectionLevel="signature" />
    <uses-permission android:name="cn.rongcloud.im.permission.MIPUSH_RECEIVE" />
    <!-- ⼩米 配置结束 < -->
    <!-- GCM 配置开始 < -->
    <permission
        android:name="cn.rongcloud.im.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="cn.rongcloud.im.permission.C2D_MESSAGE" />
    <!-- GCM 配置结束 < -->
    <!-- 华为 配置开始 < -->
    <!--HMS-SDK 引导升级 HMS 功能,访问 OTA 服务器需要网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--HMS-SDK 引导升级 HMS 功能,保存下载的升级包需要 SD 卡写权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 检测网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 检测 wifi 状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 为了获取用户手机的 IMEI,用来唯一的标识用户。-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <!-- 如果是安卓 8.0,应用编译配置的 targetSdkVersion>=26,请务必添加以下权限 -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <!-- 华为 配置结束 < -->

    <!-- MeiZu 配置开始 < -->
    <!-- 兼容 flyme5.0 以下版本,魅族内部集成 pushSDK 必填,不然无法收到 消息 -->
    <uses-permission
        android:name="com.meizu.flyme.push.permission.RECEIVE"/>
    <permission
        android:name="cn.rongcloud.im.push.permission.MESSAGE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="cn.rongcloud.im.push.permission.MESSAGE"/>
    <!-- 兼容 flyme3.0 配置权限 -->
    <uses-permission android:name="com.meizu.c2dm.permission.RECEIVE" />
    <!-- MeiZu 配置结束 < -->

新建 Application 在 oncreate 初始化 sdk 因为接入了融云 SDK会有主进程,和推送进程,那我们在主进程进行初始化

代码语言:javascript
复制
    if (applicationInfo.packageName == getCurProcessName(applicationContext)) {
        try {
            RongIM.init(this,Constant.APP_KEY)
        } catch (e: Exception) {
            e.printStackTrace()
        } finally {
        }
        }

然后调用 RongIM.connect,在成功的回调进行内容提供者(设置头像和昵称),token要在后台获取,测试的时候你可以在 应用里面获取 token

代码语言:javascript
复制
   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 ,在布局文件加入

代码语言:javascript
复制
  <fragment
        android:id="@+id/conversationlist"
        android:name="io.rong.imkit.fragment.ConversationListFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

再注册这个activity,因为是隐式跳转这个 activity 注意 data 的 host 是写自己包名

代码语言:javascript
复制
<activity android:name="com.ppjun.android.improject.mvp.ui.ConversationListActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data
                    android:host="com.ppjun.android.improject"
                    android:pathPrefix="/conversationlist"
                    android:scheme="rong" />
            </intent-filter>
        </activity>
创建聚合会话列表

创建 SubConversationListActivity ,在其布局文件加入

代码语言:javascript
复制
    <fragment
        android:id="@+id/subconversationlist"
        android:name="io.rong.imkit.fragment.SubConversationListFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

再注册这个activity,因为是隐式跳转这个 activity 注意 data 的 host 是写自己包名

代码语言:javascript
复制
  <!--聚合会话列表-->
        <activity
            android:name="com.ppjun.android.improject.mvp.ui.SubConversationListActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustResize">

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:host="com.ppjun.android.improject"
                    android:pathPrefix="/subconversationlist"
                    android:scheme="rong" />
            </intent-filter>
        </activity>
创建会话

创建 ConversationActivity ,在其布局文件加入

代码语言:javascript
复制
  <fragment
        android:id="@+id/conversation"
        android:name="io.rong.imkit.fragment.ConversationFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

再注册这个activity,因为是隐式跳转这个 activity 注意 data 的 host 是写自己包名

代码语言:javascript
复制
   <!--会话界面-->
        <activity
            android:name="com.ppjun.android.improject.mvp.ui.ConversationActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:host="com.ppjun.android.improject"
                    android:pathPrefix="/conversation/"
                    android:scheme="rong" />
            </intent-filter>
        </activity>
打开会话列表
代码语言:javascript
复制
  private fun startConversationList() {
        val map = HashMap<String, Boolean>()
        map.put(Conversation.ConversationType.PRIVATE.getName(), false) // 会话列表需要显示私聊会话, 第二个参数 true 代表私聊会话需要聚合显示
        map.put(Conversation.ConversationType.GROUP.getName(), false)  // 会话列表需要显示群组会话, 第二个参数 false 代表群组会话不需要聚合显示
        RongIM.getInstance().startConversationList(this@MainActivity, map)
    }
创建私聊会话
代码语言:javascript
复制
     RongIM.getInstance().startPrivateChat(this@MainActivity, "123456", "userid")

项目地址 https://github.com/gdmec07120731/IMProject

常见问题

connect 无回调,报找不到 libsqlite.so 异常 解决方法 http://support.rongcloud.cn/kb/NTQw

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接入融云
  • 添加应用
  • 开始
  • 创建会话列表
  • 创建聚合会话列表
  • 创建会话
  • 打开会话列表
  • 创建私聊会话
  • 常见问题
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档