使用融云开始还是遇到了很多的坑的,特别是看不太明白官方文档。或许自己不够有耐心。
期间还遇到了许多bug,比如,明明配置的没问题了,可我的手机还是连不上融云。
后来还是在融云的知识库中找到了解决办法,总之是一波三折。
1 下载SDK
有IMKit SDK和IMLib SDK可以下载。其中IMKit是带一些组件的,像会话页面等可以直接使用。如果想重新定制界面便选择IMLib SDK即可。
为了方便快速使用,最后我还是选择了下载IMKit
在下载下来的压缩包解压后如下
2 在Android Studio中导入
最开始的时候,我按照一些教程,直接在Android Studio里面Import Module,之后出现了一些问题,首先是IMkit里面的build.gradle依赖了compile project (':IMLib')
,其次我没有找到写RONG_CLOUD_APP_KEY的地方。
解决方法
方法一
- 可以将IMLib文件夹下libs中的Rong_IMLib.jar添加到你项目中的libs中
- 然后将IMLib文件夹下的AndroidManifest.xml中的内容全部写入你自己项目中的AndroidManifest.xml中,我们可以看到该AndroidManifest.xml里面是有
android:name="RONG_CLOUD_APP_KEY"
android:value="此处添加APP_KEY" />
方法二
该方法我觉得更好些,也更容易理解,也更不容易出错。当时查看官网的知识库得知。
所以,方法二就是按这个说法。
- 首先在Android studio中Import Module IMLib
- 再Impor Module IMKit
3 基础配置
在完成上述的导入操作后,还需进行以下操作。
- 此时你的项目只是导入了IMLib和IMKit,其中IMKit已经依赖了IMLib,因为IMKit中的build.gradle已经
compile project(':IMLib')
对其依赖了,而你的项目并没有对IMKit进行依赖。同理,只需要你在自己项目中的build.gradle对IMKit进行依赖即可,compile project (':IMKit')
。 - 在IMLib中找到AndroidManifest.xml,在
<meta-data
android:name="RONG_CLOUD_APP_KEY"
android:value="你的App Key" />
value中写入你的融云App Key即可。
- 在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 关键,看看能不能连上融云咯
注:如果有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
这一步应该也是需要有的,和上面加libsqlite.so是一样的
以上便是使用融云SDK集成的所有步骤,终于写完了。。。