新增
1. 添加聊天室用户异常掉线或主动退出的时候自动清除队列:ChatRoomService#updateQueueEx。影响类和接口:
- 添加通知类型:NotificationType#CHATROOM_QUEUE_BATCH_CHANGE,表示队列批量变更。
- 添加附件类型:ChatRoomPartClearAttachment,包含清除队列的内容。
2. NOS 资源下载添加 CDN 支持,添加两种可配置模板,见 SDKOptions#ServerAddress#nosAccess。
3. 适配 Android O 版本通知栏,增加云信即时消息通道、消息免打扰通道,解决 target 指向26 通知栏无法弹出的问题。
4. 适配 Android O 版本后台运行机制,开发者请务必在清单文件里面配置:
<service android:name="com.netease.nimlib.service.ResponseService" />
5. 适配 Android O+ 版本,解决 target 指向27 InvalidKeySpecException 导致的 SDK 无法登陆的问题。
6. 添加新的 IPC 数据共享机制,替换不安全的多进程读写 SharedPreference,开发者请务必在清单文件里配置:
<provider
android:name="com.netease.nimlib.ipc.NIMContentProvider"
android:authorities="{APP包名}.ipc.provider"
android:exported="false"
android:process=":core" />
7. 添加 SDKOptions#asyncInitSDK 支持异步 SDK 初始化,降低 Application#onCreate 中 SDK 初始化函数的同步响应时间。
8. 添加 SDKOptions#reducedIM 支持弱 IM 场景。如果您的APP 仅在部分场景按需使用 IM 能力(不需要在应用启动时就做自动登录),并不需要保证消息通知、数据的实时性,那么这里可以填 true。弱 IM 场景下,push 进程采用懒启动策略(延迟到用户登录阶段),启动后其生命周期将跟随 UI 进程,降低弱 IM 场景的APP的后台功耗开销。
9. 添加 SDKOptions.checkManifestConfig,自动检查 SDK 配置是否完全,如果不完全将抛出异常提示。强烈建议开发者在开发阶段开启检查,检查通过后,线上环境关闭。
10. API 调用框架增强:
- 支持带 Looper 的非UI线程发起的异步API调用,直接回调到调用者线程。老版本会默认回调到 UI 线程。
- 提供异步强制转成同步的接口:NIMClient#syncRequest,允许设置最大同步等待时间,支持非 UI 线程里需要同步调用云信 API的场景。
- 添加自动生成的 NIMSDK类,开发者可以直接采用 NIMSDK#getXXXService 方法获取服务接口,不再需要传递 XXXService.class,简化 API 调用方式。其他插件自动生成的调用入口类为:NIMChatRoomSDK、NIMLuceneSDK。例如采用
NIMSDK.getAuthService().login()
替换NIMClient.getService(AuthService.class).login()
。
11. 添加 NIMClient#getSDKVersion 接口,运行时获取当前集成的 SDK 版本号。
变更
1. 类变更:com.netease.nimlib.sdk.uinfo.UserInfoProvider#UserInfo 包名变更为 com.netease.nimlib.sdk.uinfo.model.UserInfo,开发者升级到此版本时,请统一修改 UserInfo import 的包名。
2. 类成员函数变更:UserInfoProvider 移除 getDefaultIconResId、getAvatarForMessageNotifier、getTeamIcon 三个函数,统一替换为新增的函数,根据会话类型、会话ID返回消息提醒需要的头像位图:getAvatarForMessageNotifier(sessionType, sessionId),请参考最新 Demo 源码中 NimUserInfoProvider 类中提供的替换方案。
3. 添加 NIMUitl#isMainProcess 接口,保证 SDK 初始化及 APP 初始化进程判断方式统一,请开发者替换 Application#onCreate 中主进程判断方法为此方法。
4. 移除 SDKOptions#enableSDKBackgroundReconnectStrategy 后台自动重连开关,请采用弱 IM 模式替换。
5. 修复 Push 进程自动登录被踢出后,部分机器进程被系统反复调度重启时依然发起连接的问题。
6. 针对 SDKOptions#sdkStorageRootPath 配置的外置存储缓存根目录,如果开发者配置在 Context#getExternalCacheDir 及 Context#getExternalFilesDir 等应用扩展存储缓存目录下(即/sdcard/Android/data/{package}),SDK 内部将不再检查写权限。值得注意的是,改缓存目录下的的文件会随着App卸载而被删除,也可以由用户手动在设置界面里面清除。
7. 优化唤醒策略,减少不必要的唤醒。优化 Push 进程无法唤醒 UI 时将采用的 “自杀机制”,先切断所有唤醒路径后再安全退出。
8. 修复匿名聊天室断网重连过程中如果出现回调 1001 的错误码时(SDK无法通过回调获取聊天室ip)时,SDK 无法继续重连的问题。
9. 修复聊天室调用 ChatRoomSerivce#updateMyRoomRole 后,在断网重连过程中,丢失角色信息更新的问题。