这是本文档旧的修订版!


Android SDK 更新日志


  • 新增EMStreamParam#setUsingExternalSource(boolean)接口,用于支持音视频会议模式下的EMConferenceManager#inputExternalVideoData()接口的使用;
  • 修复chrome 72+ 与Android设备 1v1 呼叫不通的问题;
  • 修复SDK中三方推送使用可能崩溃的问题;
  • 修复Demo层的一些bug;

新功能:

优化:

  • 优化三方推送的集成使用接口,详情请见第三方推送集成文档;
  • 优化一些错误码返回值,错误原因更加具体;

修复:

  • 修复个别情况下音视频通话接通失败的问题;
  • Demo层的一些bug;

注意:针对oppo推送,我们把Demo包名替换为了:com.hyphenate.chatuidemo.push。如果在环信Demo上测试Oppo推送,请自行修改Demo包名。

修复:

  • 某些情况下使用含大写字母的id发消息失败的问题;
  • debug log不能关闭的问题;
  • 退出登录时仍然可以取到当前用户id的问题;
  • 某些场景下第二次加入音视频会议失败的问题;
  • 共享网络下不能拨打音视频通话的问题;
  • 自己给自己发送消息不能加载会话的问题;
  • Demo从设置中设置视频通话分辨率无效的问题;

优化:

  • sqlite升级至3.26.0
  • 完善音视频通话逻辑,提高音视频呼叫接通率
  • 适配android 9.0
目前,环信IM SDK和Demo已经全部适配至9.0,编译环境配置如下:
 - Android Studio version: 3.2.1
 - project-level/build.gradle version config:
   buildscript {
    ext.kotlin_version = '1.2.71'
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
   }
 - module-level/build.gradle version config:
   android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 28
    }
   }
 - gradle version (path: project-dir/gradle/wrapper/gradle-wrapper.properties):
   distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
 - Android Support-Library 相关:
   'com.android.support:design:28.0.0-alpha1'
   
 Tips:版本的更新会从Google相关网站下载相应版本的编译工具,可能需要科学上网哦

新功能:

  • 移除IM SDK3.2.0及以前deprecated的方法。
api 变动如下, '-'代表deprecated api,'+'代表可替换的api

-  public int EMChatRoom#getAffiliationsCount();
+  public int EMChatRoom#getMemberCount();

-  public int EMGroup#getAffiliationsCount();
+  public int EMGroup#getMemberCount();

-  public void EMContact#setNick(String nick);
+  public void EMContact#setNickname(String nick);

-  public String EMContact#getNick();
+  public String EMContact#getNickname();
  • 添加EMCallSurfaceView#setCoverImage(Bitmap bitmap)接口,在通过EMConferenceManager#updateLocalSurfaceView(EMCallSurfaceView)或者EMConferenceManager#updateRemoteSurfaceView(String, EMCallSurfaceView)设置该EMCallSurfaceView时,该view会在stream到来前显示该Bitmap。

修复:

  • 音视频通话后可能导致内存泄露的bug;
  • 自动登录时无网络,导致获取自己在其他设备登录的id包含自己的bug;
  • 个别情况下,连接失败时更新服务器列表的bug;
  • 32位设备上EMMessage#setLocalTime(long serverTime)设置后获取为负数的bug;

新功能:

  • 多人实时音视频添加动态修改最大视频码率接口 EMConferenceManager#updateVideoMaxKbps(int maxKbps)
  • 1v1实时音视频单独录制音频的功能 EMVideoCallHelper#startAudioRecord(String dirPath) 和 EMVideoCallHelper#stopAudioRecord()

修复:

  • Fix:Demo中实时音视频中接听普通电话的问题

优化:

  • 屏幕共享性能

新功能:

  • 为满足不同场景需求,3.5.0版本开始将实时音视频会议划分了不同的类型,不同类型对应了不同场景,使你能够轻松地将实时音视频功能集成到你的应用或者网站中。类型如下:
   1. Communication:普通通信会议,最多支持参会者6人,会议里的每个参会者都可以自由说话和发布视频,该会议类型在服务器不做语音的再编码,音质最好,适用于远程医疗,在线客服等场景;
   2. Large Communication:大型通信会议,最多参会者30人,会议里的每个参会者都可以自由说话,最多支持6个人发布视频,该会议模式在服务器做混音处理,支持更多的人说话,适用于大型会议等场景;
   3. Live:互动视频会议,会议里支持最多6个主播和600个观众,观众可以通过连麦与主播互动,该会议类型适用于在线教育,互动直播等场景。
  1. 解决Android 7.0以上设备聊天中选择扩展功能中的'拍照'崩溃的问题
  2. 增加'只投递在线用户'消息属性,以节约消息量,目前只支持CMD类型消息。通过EMCmdMessageBody#deliverOnlineOnly(true)接口设置该属性

新功能:

  1. 多人会议增加 joinConferenceWithTicket(); 接口
  2. 通过消息邀请参加会议;
  3. Android 8 适配

修复:

  1. 修复移动端与chrome 端视频通话时不显示视频画面的bug;
  2. 解决极端情况下 Android 通话挂断崩溃的问题

优化:

  1. 音视频会议实现新的UI;
  2. 优化设备同时有FCM和华为推送时的逻辑,使用EMOption#setUseFCM()接口

EMOption#setUseFCM() 接口可以设置是否启用谷歌推送,无需再通过后台配置。默认为true,即如果用户手机上有google play service 且配置了FCM number则优先使用FCM推送,如果仅有国内用户,建议关闭该选项,详细可参考 demo 实现

请注意:为提供高质量且一致的音视频体验,从3.4.1版本开始,1v1 通话不再与3.1.5及以前版本兼容,请及时升级。

SDK:

  1. 修复安卓中会话消息未读数显示不准确的问题;
  2. 修复华为推送自动登录情况下有时不可用的问题;
  3. 修复app第一次安装运行,初始化过程有可能报nullpointer的问题;
  4. 尝试解决sendDeviceToServer()方法crash的问题;
  5. 实现音视频弱网检测提示功能;
  6. 实现加群时填写验证消息功能;
  7. 提供聊天室断线时被踢出聊天室的提醒;
  8. 优化1v1 通话;

EaseUI:

  1. 更新消息发送逻辑,用于解决发送消息出现重复,顺序颠倒等问题.

请注意:为提供高质量且一致的音视频体验,从3.4.1版本开始,1v1 通话不再与3.1.5及以前版本兼容,请及时升级。

新功能:

  1. 将华为推送的集成从sdk中转移到应用层,SDK提供上传华为推送token的接口供用户调用,方便华为推送升级时用户自行升级 3.4.0.1华为推送修改文档

新功能:

  1. 增加是否使用FCM推送的接口 通过EMOptionssetUserFCM()方法设置
  2. 添加语音会议功能 多人音视频会议

修复:

  1. 修复华为推送覆盖安装时无法收到推送的bug
  2. 修复下载附件时不更新token的bug
  1. Demo层实现群组消息已读功能(发送方在EMMessage.ext中自定义字段用以表示是否需要已读回执,接收方用CMD消息实现已读回执)
  2. 精简Demo实现,demo中移除红包功能;
  3. 优化重连逻辑,解决用户迁移和服务器受攻击后部分用户连接服务超时的问题;
  4. 修复获取会话中消息数量接口(EMConversation#getAllMsgCount())不准确的bug;
  5. 修复弱网环境下,连续发送多个带附件消息的同时从数据库中加载更多历史消息导致消息重复展示的bug;
  6. 适配部分'1+'手机SharedPreferences#Editor#apply()方法无效的问题;
  1. 添加服务诊断接口
  2. 添加设置音频码率接口
  3. 优化重连逻辑,减少重连次数
  4. 添加社区版SDK注册用户,创建群组\聊天室达到数量限制的提示

修复:

  1. 修复使用华为推送时注册华为推送 token 空指针问题
  2. 修复更新聊天室公告时,其他聊天室成员收到回调崩溃问题
  3. 修复保存和插入消息时间戳和本地已存在消息的时间戳不同时,导致内存出现重复消息的问题
  4. 消息时间戳相同时导致消息不能正确加载
  5. 离线消息在某些情况下会导致cmd与普通消息顺序不一致

新功能:

  1. 新增API请查看3.3.6 API变化
  2. 使用外接音频输入源进行音视频通话时,设置音频源
  3. 提供是否自己处理附件的上传和下载设置项
  4. 提供是否自动下载附件类消息附件设置项(缩略图,语音文件)
  5. 多人音视频会议功能,详细参考集成文档 多人音视频会议

优化:

  1. 更改 easeui 中 EaseChatRow 实现方式,保证发送消息的回调顺利执行
  2. 使用SDK下载接口,如果本地已经有同名文件,新的文件名会在原有文件名后边追加数字;

修复:

  1. 修复使用华为推送时注册华为推送 token 空指针问题
  2. 修复更新聊天室公告时,其他聊天室成员收到回调崩溃问题
  3. 修复保存和插入消息时间戳和本地已存在消息的时间戳不同时,导致内存出现重复消息的问题

修复:

  1. 不再尝试加载sqlcipher。因为部分手机已经在系统中集成sqlcipher,并且会查找java端相应代码,会导致3.3.5加载失败。

新功能:

  1. 增加了传输安全性;
  2. 支持FCM推送;

优化:

  1. 私有部署设置dns的接口;
  2. 优化私有部署重连逻辑;
  3. 限制用户名长度为255;
  4. 需要服务器开通的功能接口返回SERVICE_NOT_ENABLED(505);

修复:

  1. 修复4G与wifi切换时偶然出现发送消息失败的bug;
  2. 修复VIVO手机JobService crash问题;

修复在用户名有下划线时发送消息失败的bug;

新功能

  1. 新增加API请查看链接3.3.4api修改
  2. 增加接口支持获取历史消息(消息漫游)(此功能需要联系商务同事开通);
  3. 新增PC与移动端互发消息和文件的功能;
  4. 增加消息撤回的接口和回调(此功能需要联系商务同事开通);
  5. 支持华为新版推送功能(HMS);

新功能

  1. 新增加API请查看链接3.3.3api修改
  2. 支持在多个设备登录同一个账号,多个设备间可以同步消息,好友及群组的操作(多设备登录属于增值服务,需要联系商务开通);
  3. 添加群共享文件的大小属性;
  4. 增加获取同一账号登录的设备列表的接口,并可以选择踢掉某个设备上的登录;

问题修复

  1. 修复分页获取聊天室成员接口无法传入cursor的问题;
  2. 修复邀请群成员时没有附带信息的bug;
  3. 修复群组操作时必须获取所有已加入群组的问题;
  4. 修复附件消息在web IM中右键另存时不能正确显示名字的问题;
  5. 修复android 共享文件名为中文时显示乱码的问题;
  6. 修复下载附件路径不存在或者打开错误时仍然下载成功的bug;
  7. 修复切换账号时某些场景下崩溃的bug;
  8. 修复获取群成员时最后一页cursor未更新的问题;
  1. 增加群、聊天室公告相关API
  2. 群组支持上传及下载共享文件
  3. 群组支持设置扩展属性
  4. EMLocalSurfaceView 和 EMOppositeSurfaceView 合为同一个控件 EMCallSurfaceView
  5. Demo及EaseUI改成纯Android Studio结构,不再支持Eclicpse导入
  6. easeui没有包含SDK的jar和so, 使用需要自己拷贝libs下的库文件,或者执行copyLibs.sh完成拷贝。

新功能:

  1. 新增:使用token登录接口
  2. 新增:群组群成员进出群组回调

优化:

  1. Demo中红包集成方式更改为aar,默认支持支付宝渠道支付

修复

  1. 之前EMChatManager.getMessage对应的消息会保存在缓存中,修改后不缓存getMessage产生的消息。之前的代码会导致loadMoreMessage部分消息不显示。
  2. 3.3.0版本Demo中群组@键,弹出列表没有包含群组管理员
  3. 3.3.0版本EMGroup.getMuteList会崩溃
  4. 3.3.0版本EMChatRoom hash code错误
  5. 修复音视频被叫时多个应用都会收到通知的错误

新功能:

  1. 群组和聊天室改造:增加管理员权限,新增禁言,增减管理员的功能,支持使用分批的方式获取成员,禁言,管理员列表,支持完善的聊天室功能。新增加API请查看链接3.3.0api修改
  2. 优化dns劫持时的处理
  3. 增加EMConversation.latestMessageFromOthers,表示收到对方的最后一条消息
  4. 增加EMClient.compressLogs,压缩log,Demo中增加通过邮件发送log的示例
  5. libs.without.audio继续支持armeabi,解决armeabi-v5te的支持问题

bug 修订:

  1. 修复2.x升级3.x消息未读数为0的bug
  2. Demo在视频通话时,主叫方铃声没有播放的问题
  3. Demo在视频通话时,主叫方在建立连接成功后,文字提示不正确
  4. Demo在聊天窗口界面,清空消息后,收到新的消息,返回会话列表,未读消息数显示不正确
  5. 修复在Oppo和Vivo手机上出现的JobService报错。
  6. EMGroupManager.createGroup成员列表数超过512产生的overflow错误
  7. 修复部分手机在网络切换时发消息慢的bug

新功能/优化:

  1. sdk提供aar及gradle方式集成,具体方法查看gradle方式导入aar
  2. 增加离线推送设置的相关接口,具体方法可查看EMPushManager API文档
  3. 为了使sdk更简洁易用,修改一些api,并将一些api标记为“已过时”,具体修改查看3.2.3api修改,另外,已过时的api后续3-5个版本会进行删除
  4. 优化loadAllConversationsFromDB()方法,从联表查询改为从两个表分别查询,解决在个别乐视手机上执行很慢的问题
  5. 优化登录模块,减少登录失败的概率
  6. 鉴于市面上的手机基本都是armeabi-v7a及以上的架构,从这版本开始不再提供普通的armeabi架构的so,减少打包时app的体积

红包相关:

新增:

  1. 小额随机红包
  2. 增加广告红包(需要使用请单独联系商务)
  3. 商户后台增加广告红包配置、统计功能
  4. 商户后台增加修改密码功能

优化:

  1. 绑卡后的用户验证四要素改为验证二要素
  2. 发红包等页面增加点击空白区域收回键盘的功能
  3. 群成员列表索引增加常用姓氏以及汉字的支持

修复bug:

  1. 红包详情页领取人列表展示不全
  2. 华为P8手机密码框无法获取焦点
  3. 部分银行卡号输入正确,提示银行卡号不正确
  4. 红包祝福语有换行符显示不正确
  5. 修复Emoji表情显示乱码
  6. 修复商户自主配置红包最低限额错误
  7. 修复零钱明细显示顺序错误问题

新功能/优化:

  1. 新增设置音视频参数及呼叫时对方离线是否发推送的接口
  2. 新增修改群描述的接口;
  3. 删除好友时的逻辑修改: 删除好友增加接口,根据参数是否删除消息; 被动被删除时不再删除会话消息, 用户需要删除会话及消息时可以在onContactDeleted()中调用EMClient.getInstance().chatManager().deleteConversation(username, true)。

Bug Fix:

  1. 修复3.2.1版本中某些情况下心跳比较频繁的问题,节约流量电量,建议升级到最新版本;
  2. 修复呼叫时对方不在线,不能正确显示通话结束原因的问题;
  3. 修复某些特殊情况下获取群成员列表时crash的问题;
  4. 修复某些特殊情况下退出时crash的问题;

Demo:

  1. demo中增加音视频参数设置页;

新功能/优化:

  1. 聊天室列表支持分页获取
  2. 发起电话的接口增加ext参数,方便用户自定义内容
  3. EMOption中增加setUseHttps()的接口
  4. 优化会话加载的速度

Bug fix:

  1. 修复使用视音频后可能导致手机外放没有声音的bug
  2. 修复发送消息后马上删除附件可能导致手机crash的bug
  3. 修复音视频呼叫在某些魅蓝手机上会卡死的bug
  4. 修复demo中呼叫时没有铃声的bug
  5. 修复了视频通话时使用后置摄像头时图像显示不正确的bug

音视频包含大量升级改进,细节请参考集成文档

  • 增强的自适应视频质量算法,根据网络环境动态调整清晰度;
  • 优化了语音算法,通话更清晰;
  • 支持高清视频,画质更细腻;
  • 支持客户端视频和语音数据回调,;
  • 支持横屏和竖屏自由转换;
  • 支持画面fit和fill模式;

红包功能改进:

  • 增加个人间转账功能
  • 增加拆红包音效

其他改进:

  • cmd消息增加“em_” 和 “easemob::” 开头的action为内部保留字段;
  • Fix 个别情况下会话未读消息数显示不准确的bug;
  • Fix 个别情况下获取联系人不正确的bug;
  • Fix 登录户马上加入聊天室某些情况下会失败的bug;
  • 发送语音或者视频时,如果文件内容过小会给出提示;
  • 优化读取数据库的性能;
  1. 修改一些api名称,主要针对一些拼写错误的api,具体变动请查看3.1.5api修改
  2. 优化读取联系人的速度;
  3. 修复在logout方法的回调里立刻调用login方法不能登录的bug;
  4. 修复https安全漏洞,提高安全性;
  5. 修复实时通话时暂停音频不生效的bug;
  6. 修复使用网线连接时NetUtils.hasDataConnection()判断为false的bug;
  7. 修复发送消息时导致memory leak的bug;

新功能/优化:

  1. 支持华为推送
  2. 聊天室获取详情后可以通过相应api获取到成员列表及成员数
  3. easeui及demo增加@消息

红包相关:

  1. 支持群内的专属红包,只有指定用户才能抢红包;
  2. 支持支付宝;
  3. 支持系统发的群红包,用户只能看到自己的领取情况;
  4. 支持绑定多张银行卡,支持解绑银行卡;
  5. 零钱页支持充值;
  6. 改版零钱页;
  7. 支持上传身份证照片做第三通道验证;
  8. 红包UI细节打磨,包括双title和各个页面细节,安卓和iOS文案统一;
  9. 错误信息梳理,关键错误基于对话框引导;
  10. 服务端性能数倍的提升;
  11. 红包数据平台完善统计项;
  12. 其他优化:优化代码结构,剥离第三方库减少和开发者库的冲突;透传消息仅给发红包用户而非群内全部用户;优化token获取和更新机制;修复若干bug。
  1. 修复R1版本中第三方app或者sdk不能捕捉到app crash的问题
  2. 修复R1版本中在Android4.2.2以下系统中使用实时通话crash的问题

新功能/优化:

  1. 消息支持按照本地时间或服务器时间排序
  2. 实时音视频支持动态码率
  3. Demo支持红包功能(单聊及群聊红包)
  4. Demo适配了Android 6.0运行时权限,现在把targetSdkVersion设到23程序也能正常运行

Bug fix:

  1. 修复自动同意好友请求有延迟的问题
  2. 修复在targetSdkVersion设为23时,视频通话可能crash的问题

修复 R1 版本 4G 情况下调用NetUtils.hasDataConnection()方法返回 false 的 bug。

新功能:

  1. 视频通话增加切换摄像头 API:EMClient.getInstance().callManager().switchCamera()。
  2. 新增消息搜索 API:conversation.searchMsgFromDB()。
  3. 支持设置和获取 long 类型的扩展字段。
  4. 加快 APP 从后台切到前台时的重连速度。
  5. 优化 GCM 推送。

Bug fix:

  1. 修复某些手机发送系统表情时对方接到为乱码或空白的 bug。
  2. 修复上一个版本发送图片消息时,如果是小图会删除原图的 bug。

新功能:

  1. 音视频增加弱网/断网检测功能。
  2. 音视频增加音频、视频流暂停、恢复功能。
  3. 音视频增加录制功能。
  4. 发送图片默认压缩图片,节约流量。

新功能:

  1. 增加了音视频功能,用户可以建立一对一的音频通话,视频通话。
  2. 增加 Android studio support。
  3. 增加 x86 版本动态库,可以在模拟器上调试。

Bug fix:

  1. 修复了扩展字段解析的问题。
  2. 修复了用户 id 中有下划线时,会话中 id 显示不完整的问题。
  3. 修复了某些情况下创建 cmd 类型消息失败的问题。
  1. 修复从 2.x 版本升级到 3.0 版本覆盖安装后某些会话不能显示出现的问题。
  2. 修复某些情况下上传推送相关的信息不成功的问题。
  1. 全新的通信协议:全新的基于消息同步的私有协议,在不稳定网络环境下更稳定更省流量,确保消息投递的可靠、顺序以及实时性,并具有更高的安全性。同时提供了更好的扩展性,将支持更多的对接和设备同步场景。
  2. 全新的 SDK:全面重构,将核心通信模块做了更好的封装;简化了接口,结构更清晰,集成更容易;提升了登录速度和弱网络环境下的可靠性编辑。

下一页:消息