Android 2.6.0 SDK 接口变动和升级版本时可能遇见的错误

2.6.0 是一个里程碑的 Versaion 。因为其中做了相当多的改动和优化,如果你是新用户可无须参考下面文档直接集成。如果你是从下 2.+ 版本准备升级 2.6.0 版本的开发者需要仔细阅读下面文档

2.6.0 版本优化如下:
1 、push 整体优化 push到达率大幅提升
2 、用户信息缓存设计优化
3 、相册优化(相册文件夹,预览等)
4 、一些 UI 和细节上的优化

改动如下:

android_2.6.0_dev

 

1、用户信息提供者的接口变动
之前的用户信息缓存只做了内存缓存 ,此次优化变更后新增一级数据库缓存。当然接口也有一些变化了
Old:
RongContext.getInstance().getXXX
New:
RongUserInfoManager.getInstance().getXXX
以 Demo 为例变更类:
ContactNotificationMessageProvider.Java

2、包名变更(直接更换 IMKit 依赖的可以无视此处)
io.rong.imkit.util 下包名全部变更为: io.rong.imkit.utils
例:

import io.rong.imkit.utils.AndroidEmoji;
import io.rong.imkit.utils.RongDateUtils;

3、第三方库的冲突解决变更
eventbus 是 Android 常用的第三方类库
2.6.0 的版本已解决 eventbus 冲突的问题

4、AsyncImageView 的用法改变(改动地方较多)
地理位置中
LocationMapActivity.java 中的 addMarker 方法
imageView.setResource(url, 0);
不再需要 new Resource

5、需要注释代码
RongIMClient.recordNotificationEvent(id);
RongIM.getInstance().getRongIMClient().clearNotifications();

6、Push 整体优化,使 Push 到达率大幅提升:支持小米、华为、GCM 推送,服务器后台智能切换
push manifest 配置
以前旧的 manifest 的 Push 相关的广播服务需要去除。换成新的
详情请见 push 配置文档

请注意,该版本开始,必须自定义一个继承 PushMessageReceiver 的广播接收器,否则,会导致收不到推送通知,或者有可能收到后台通知时,点击无跳转反应。

7、接口调用问题
RongIM.getInstance().getRongIMClient().XXX 的方法已经过时 并且不推荐使用
以后代码中直接 RongIM.getInstance().XXX
例如:
Old:
RongIM.getInstance().getRongIMClient().sendMessage
New:
RongIM.getInstance().sendMessage

8、connect 连接判断问题

以前可能判断是否有 RongIM 和 RongIMClient 实例 和 判断与融云服务端 connect 状态大家会这样写

if(RongIM.getInstance() != null && RongIM.getInstance().getRongIMClient() != null){}

但是在 2.6.0 以后都不建议这样去写了

直接获取与融云连接状态的枚举做判断即可,写法如下:

 if (RongIM.getInstance().getCurrentConnectionStatus().equals(ConnectionStatus.CONNECTED)) {
            }

 

Release Note:

1、Push 整体优化 Push 到达率大幅提升:支持小米、华为、GCM 推送,详细请参见文档:http://www.rongcloud.cn/docs/android_push.html
2、用户信息缓存设计优化,支持用户信息离线存储
3、相册优化,按时间排序,文件夹分类,+号区域拍照入口移至相册
4、一些 UI 和细节上的优化
5、为避免冲突,修改了 eventbus、photoView、 imageLoader 包名,用户有两个选择:使用我们修改后的(对应包名 io.rong.imageloader, io.rong.eventbus, io.rong.photoview)或者下载官方的。
6、优化了AsyncImageView 控件,更改了部分方法,防止头像图片过大,滑动卡顿问题。会解决 oom 问题。
7、废弃了 RongIM.getInstance().getRongIMClient() 的调用方式,如果使用 IMKit 中的接口,请直接以 RongIM.getInstance() 方式使用,不要再判断是否是 RongIM.getInstance().getRongIMClient()==null 。
8、IMkit 中增加了创建讨论组接口,这样用户在启用讨论组界面时,也可以拿到讨论组 Id。
9、RongIMClient 中增加了 sendMessage(final Conversation.ConversationType type, final String targetId, final MessageContent content, final String pushContent, final String pushData, IRongCallback.ISendMessageCallback callback)
接口,使用这个接口发送消息成功后,就可以拿到 message 的 uid。