安卓三方集成即时通讯通讯

使用融云SDK集成

2017-06-14  本文已影响197人  忘尘无憾

使用融云开始还是遇到了很多的坑的,特别是看不太明白官方文档。或许自己不够有耐心。

期间还遇到了许多bug,比如,明明配置的没问题了,可我的手机还是连不上融云。

后来还是在融云的知识库中找到了解决办法,总之是一波三折。

1 下载SDK

融云SDK官方下载地址

融云SDK下载页面截图
IMKit SDKIMLib SDK可以下载。其中IMKit是带一些组件的,像会话页面等可以直接使用。如果想重新定制界面便选择IMLib SDK即可。

为了方便快速使用,最后我还是选择了下载IMKit

在下载下来的压缩包解压后如下

解压后的文件目录

2 在Android Studio中导入

最开始的时候,我按照一些教程,直接在Android Studio里面Import Module,之后出现了一些问题,首先是IMkit里面的build.gradle依赖了compile project (':IMLib'),其次我没有找到写RONG_CLOUD_APP_KEY的地方。

解决方法
方法一
IMLib文件夹下libs
方法二

该方法我觉得更好些,也更容易理解,也更不容易出错。当时查看官网的知识库得知。

融云知识库

所以,方法二就是按这个说法。

3 基础配置

在完成上述的导入操作后,还需进行以下操作。

  1. 此时你的项目只是导入了IMLibIMKit,其中IMKit已经依赖了IMLib,因为IMKit中的build.gradle已经compile project(':IMLib')对其依赖了,而你的项目并没有对IMKit进行依赖。同理,只需要你在自己项目中的build.gradleIMKit进行依赖即可,compile project (':IMKit')
  2. IMLib中找到AndroidManifest.xml,在
<meta-data
            android:name="RONG_CLOUD_APP_KEY"
            android:value="你的App Key" />

value中写入你的融云App Key即可。

  1. IMKit中找到AndroidManifest.xml,在最下面有一块注释的地方
<!-- 此部分代码需要移植到您的 app 下的 manifest,并且 authorities 指定您的包名。例如:com.android.FileProvider -->
        <!-- 否则使用拍照功能时,会崩溃 -->
        <!--<provider-->
            <!--android:name="android.support.v4.content.FileProvider"-->
            <!--android:authorities="包名.FileProvider"-->
            <!--android:grantUriPermissions="true"-->
            <!--android:exported="false">-->
            <!--<meta-data-->
                <!--android:name="android.support.FILE_PROVIDER_PATHS"-->
                <!--android:resource="@xml/rc_file_path"/>-->
        <!--</provider>-->

按照此说法,写入你的项目的AndroidManifest.xml中,并打开注释,将包名改成自己的包名即可。

按照上述操作下去,基本是不会有问题的。

4 关键,看看能不能连上融云咯

融云Android SDK开发文档
注:如果有App类则在项目的AndroidManifest.xml中的<application下需要加上android:name=".App"

RongIM.init(this);即进行了初始化操作,为了方便测试,连接操作我直接也写在了App类中。

//融云初始化
RongIM.init(this);

//登录成功后需要用到的
String token="**********************************";
RongIM.connect(token, new RongIMClient.ConnectCallback() {
    @Override
    public void onTokenIncorrect() {
        Toast.makeText(App.this, "onTokenIncorrect", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onSuccess(String s) {
        Toast.makeText(App.this, "onSuccess-用户名:"+s, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onError(RongIMClient.ErrorCode errorCode) {
        Toast.makeText(App.this, "onError", Toast.LENGTH_SHORT).show();
    }
});

就这样,我们编译运行后就可以根据吐司的信息看到能不能连上了。

5 Android7.0连不上?怎么一点点吐司信息都没有!!

这个问题折腾了我很久,因为配置这玩意当时看各种文档,走马观花的,以为是配置没配好,后来还是在融云知识库中找到为何了。

融云知识库
我用了第二种方法,libsqlite.so下载地址
解压该文件后,将里面的文件夹(所有文件,为适配各个不同架构的手机)放入你项目的libs中,
同时,在build.gradle中的android下加
sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

即可。

注:官网SDK集成的里面还要添加libpush.so

融云SDK集成
这一步应该也是需要有的,和上面加libsqlite.so是一样的

以上便是使用融云SDK集成的所有步骤,终于写完了。。。

上一篇下一篇

猜你喜欢

热点阅读