大概描述一下发生情况:
硬件环境:
手机:小米6;
Android版本:Android 7.1.1;
沙雕融云IM的SDK:
应该是目前为止最新版的,上图:
简单的描述一下,集成的流程:
Step 1. 按沙雕IM的SDK官网开发文档的集成步骤,把你下载下来的SDK解压并将所有能Import Model到你自己的项目里的文件都Import进去,不能Import的,直接扔到Libs里,然后在App的gradle里添加引用,不会添加的自己百度找;
Step 2. 在你项目新建个类并集成Application,然后在Manifest里添加引用,哦对了,别忘了在Manifest里添加各种权限;
Step 3. 复制下面代码,到你新建的Application的onCreate里:
/**
* 初始化融云IM
*/
private void initRongYun() {
if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext()))) {
// 如果需要第三方推送,请加下面这端代码,如不需要请跳过
// PushConfig config = new PushConfig.Builder()
// .enableHWPush(true)
// .enableMiPush("小米Id", "小米Key")
// .enableMeiZuPush("魅族Id", "魅族Key")
// .enableFCM(true)
// .build();
// RongPushClient.setPushConfig(config);
// 以上都是第三方推送的代码,下面这一句话就是注册.
RongIM.init(this);
}
}
public static String getCurProcessName(Context context) {
int pid = android.os.Process.myPid();
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
return appProcess.processName;
}
}
return null;
}
粘上没?粘上了之后,跑一下,崩没崩? 没崩?瞅一眼你手机的Android版本,是不是7.0以下的?崩了?那就对了,你肯定会合计,我特么按照你说的这么搞,咋还崩了呢?不好意思,我说的也都是沙雕融云IM官网的开发文档集成的步骤,那咋还崩了呢?我当时也急眼了,但急眼并不能解决问题,下面我们看下错误信息:
WTF?我还没调用融云IM的接口,为毛就提示我token is empty!了呢?!
来吧,我告诉你原因,其实因为啥我也不知道,但是我知道咋解决,我查了老鼻子文档和百度之后,发现个事情,为毛别人家下载的SDK都有一个名叫“libsqlite.so”的文件,而我的项目里却没有?那么问题指定是出在这里了。
废话少说,直接上这个so库的文件了,使用方法:
下载 → 解压 → 看你自己项目里的libs里都有啥文件夹 → 把这些so库复制粘贴进去 → 然后重新Make Build一下子 → 然后再跑一下项目 → 然后就特么不崩了! → 但是还是会提示 token is empty! → 那就不影响啥了吧?从服务器获取到token之后再connect连上沙雕融云IM的服务器就OK了。
下载地址:
https://download.csdn.net/download/sinat_31490099/11078627
个人观点,仅供参考,不喜勿喷,想喷勿扰。