Android融云即时通讯 适配Android8.0以及 SDK版本2.8.27的集成与使用

本文详细介绍了在Android 8.0及以上版本中集成和使用融云即时通讯SDK 2.8.27的步骤,包括解决Android 8.0上的` UnsatisfiedLinkError`问题,升级Support Library到26.0.0以上,以及如何实现会话列表和会话页面的动态静态加载。同时,还涵盖了群组聊天功能的实现,包括动态加载消息列表和设置群组信息。
摘要由CSDN通过智能技术生成

集成阶段

这一阶段我们不必详细说明,因为融云官网给我们的SDK文档相当详细顺着他的步骤即可。

融云SDK集成步骤

使用阶段

融云初始化

public class App extends Application{
   
    @Override
    public void onCreate() {
        super.onCreate();
        //初始化融云
        RongIM.init(this);

    }
}

在mainactivity中连接融云,注意测试阶段可以简单的使用融云的测试token连接

 //kris  这个token为融云调试token   真正项目中一般会在登录接口中给你返回token 替换即可
        String token = "/J0eHW43mJdYDJg+0gKKZPRTe2GHWU4uO8Hvo+MUDHW6IduhjEa5yInXxsWDUOk5GH9WTfGOBnqoqulyj8HViQ==";

        RongIM.connect(token, new RongIMClient.ConnectCallback() {

            @Override
            public void onSuccess(String userId) {
                Log.e("MainActivity", "——onSuccess—-" + userId);

                Toast.makeText(MainActivity.this,"用户id"+userId,Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onError(RongIMClient.ErrorCode errorCode) {
                Log.e("MainActivity", "——onError—-" + errorCode);
            }

            @Override
            public void onTokenIncorrect() {
                //Connect Token 失效的状态处理,需要重新获取 Token
            }
        });


        /**
         * 启动单聊
         * context - 应用上下文。
         * targetUserId - 要与之聊天的用户 Id。
         * title - 聊天的标题,如果传入空值,则默认显示与之聊天的用户名称。
         */
        if (RongIM.getInstance() != null) {
            RongIM.getInstance().startPrivateChat(MainActivity.this, "1234", "");
        }


        /**

         * 启动群组聊天界面。
         *
         * @param context       应用上下文。
         * @param targetGroupId 要聊天的群组 Id。
         * @param title         聊天的标题。开发者需要在聊天界面通过intent.getData().getQueryParameter("title")获取该值, 再手动设置为聊天界面的标题。
         */

//        if ( RongIM.getInstance()!=null) {
   
//            //发起群聊天
//            RongIM.getInstance().startGroupChat(mActivity, groupID, groupName);
//        }else{
   
//            Tip.tipshort(mActivity,"群聊内容为空");
//        }

此时,我们就开始运行程序检测token是否连接融云成功,如果你使用的是Android7.0手机的话你会发现怎么都不能发送消息。然后,在顺着SDK文档找上一遍发现还是没有问题呀,为什么会出现这个问题呢,然后详细看了日志会提示这样一个错误

java.lang.UnsatisfiedLinkError: dlopen failed: library “libsqlite.so” not found
at java.lang.Runtime.load0(Runtime.java:897)
at java.lang.System.load(System.java:1505)
at com.getkeepsafe.relinker.SystemLibraryLoader.loadPath(SystemLibraryLoader.java:29)
at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:200)
at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:140)
at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70)
at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:51)
at io.rong.imlib.NativeObject.(NativeObject.java:13)
at io.rong.imlib.NativeClient.init(NativeClient.java:157)
at io.rong.imlib.LibHandlerStub.init(LibHandlerStub.java:50)
at io.rong.imlib.IHandler$Stub.onTransact(IHandler.java:52)
at android.os.Binder.execTransact(Binder.java:565)

libsqlite.so文件找不见了,好勒,差啥我们就干啥,libsqlite.so下载

放置位置

好了接下来你可能觉得可以了,那到未必。如果你的buildToolsVersion低于26的话问题就是如下了,为啥会报这样的错呢?(已经更新到26的话可以忽略这一步)

Process: com.zontonec.ztteacher, PID: 26682
java.lang.NoClassDefFoundError: Failed resolution of: Lio/rong/push/PushService;
at io.rong.push.RongPushClient.init(RongPushClient.java:146)
at io.rong.imlib.RongIMClient.initSDK(RongIMClient.java:451)
at io.rong.imlib.RongIMClient.init(RongIMClient.java:481)
at io.rong.imkit.RongIM.initSDK(RongIM.java:155)
at io.rong.imkit.RongIM.init(RongIM.java:209)
at com.zontonec.ztteacher.App.onCreate(App.java:66)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1028)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5720)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1637)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6585)
at java.lang.reflect.Method.invoke(Native Method)

融云 Android SDK 在 2.8.25-Dev 这个版本就对对 Android 8.0 做了适配。
所有项目出错了,因此,对于IMKIT下面的依赖版本一定要大于26以上才能保证正常使用
在升级到 2.8.25-Dev 版本以上时,

需要注意:SDK 中用到了 Support Library 中的比较新的 API,因此在升级 SDK 的时候,需要将工程

项目的 gradle 文件中的 Support Library 依赖升级到 26.0.0 以后,在 IMKit 中 gradle 文件中添加以下代码:

dependencies {
         compile 'com.android.support:support-v4:26.1.0'
}

如果工程中其他的module也用到了 Support Library 相关的库,也需要同步升级到 26.0.0 版本以上;

相应的,compileSdkVersion 和 buildToolsVersion 也需要同步升级到 26.0.0 以上的版本:

compileSdkVersion 26
buildToolsVersion '26.0.2'

另外,如果您工程的 build.gradle 里没有配置对谷歌 marven 仓库的依赖,也需要添加上。如下图所示:

repositories {
    jcenter()
    mavenCentral()
    maven {
        url 'https://maven.google.com/'
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值