高级功能

阅后即焚

阅后即焚(暂时只支持单聊)可以参考demo通过ECMessage中的扩展userData字段去实现、当接收方收到发送方发送过来的消息、解析userData字段发现是阅后即焚消息,在查看之后可以调用删除阅后即焚消息、通知服务器删除消息,同时发送方会收到消息被删除的通知。
发送自定义消息(userData字段)参考文档 自定义消息
API介绍
  • void deleteMessage(ECMessage delMessage,
  •                    ECChatManager.OnDeleteMessageListener listener)
  • 删除消息接口(目前只支持删除接收到的消息)
  • 参数:
  • delMessage - 需要删除的消息
  • listener - 删除消息回调接口
代码示例
  • //接收方删除阅后即焚消息
  • ECDevice.getECChatManager().deleteMessage("阅后即焚的消息的ECMessage对象", new OnDeleteMessageListener() {
  •   public void onDeleteMessage(ECError paramECError, ECMessage paramECMessage) {
  •      //处理删除阅后即焚消息的回调、获取删除消息的结果响应
  •   }});

阅后即焚通知

发送方收到接收方删除阅后即焚消息的通知(通过实现OnChatReceiveListener中的onReceiveMessageNotify方法可以获取到消息被删除的通知),参考文档:IM接收消息监听
  • public void onReceiveMessageNotify(ECMessageNotify msg) {
  •   if(msg.getNotifyType()==NotifyType.DELETE)
  •   {  //通过if判断代表当前类型是删除阅后即焚的通知
  •      ECMessageDeleteNotify deleteMsg=(ECMessageDeleteNotify) msg;
  •      //处理接收方删除阅后即焚消息的通知、比如删除本地图片等
  •    }
  •    }

撤回消息

发送消息成功后,如果用户想要撤回此消息时,此接口可以帮用户实现功能。
消息撤回的时长可以自行设置,具体说明参考:消息撤回时长
API介绍
  • void revokeMessage(ECMessage revMessage,
  •                    ECChatManager.OnRevokeMessageListener listener)
  • 撤回消息
  • 参数:
  • revMessage - 需要撤回的消息
  • listener - 回调监听
代码示例
  •  //获取消息发送者管理
  •  ECChatManager manager = ECDevice.getECChatManager();
  •  //调用撤回接口
  •  chatManager.revokeMessage(message, new ECChatManager.OnRevokeMessageListener() {
  •                 @Override
  •                 public void onRevokeMessage(ECError error, ECMessage message) {
  •                         if(error.errorCode ==SdkErrorCode.REQUEST_SUCCESS){                                                                        
  •                                 Log.d(“撤回成功");
  •                                                                         
  •                         }else {
  •                                 Log.d(“撤回失败");
  •                         }
  •                 }
  •         });                   

撤回消息通知

撤回消息后,接收方会收到对方撤回消息的通知。(通过实现OnChatReceiveListener中的onReceiveMessageNotify方法可以获取到消息被删除的通知),参考文档:IM接收消息监听
代码示例
  • public void onReceiveMessageNotify(ECMessageNotify msg) {
  •   if(msg.getNotifyType()==NotifyType.REVOKE)
  •   {  //通过if判断代表当前类型是撤回消息的通知
  •      ECMessageRevokeNotify RevokeMsg=(ECMessageRevokeNotify) msg;
  •      //处理撤回的通知
  •    }
  •   }

把消息置为已读(消息回执)

当用户接收到消息并且查看此消息时,可以向发送方发送消息已读,这样发送方就可以知道消息是否被读过。
API介绍
  • void readMessage(ECMessage message,
  •                  ECChatManager.OnReadMessageListener listener)
  • 设置消息为已读状态
  • 参数:
  • message - 需要设置的消息
  • listener - 回调监听
代码示例
  • //获取发送消息管理者
  • ECChatManager ecChatManager = ECDevice.getECChatManager(); 
  •        if(ecChatManager==null){
  •                 return;}
  • //调用已读接口将消息设置为已读
  • chatManager.readMessage(message, new ECChatManager.OnReadMessageListener() { 
  •         @Override 
  •     public void  onReadMessageResult(ECError error, ECMessage message) { 
  •     if(error.errorCode== SdkErrorCode.REQUEST_SUCCESS){ 
  •             Log.d(“置为已读成功"); 
  •                         } else{
  •                           Log.d(“置为已读失败"); 
  •                         }
  •                  };

消息回执通知

当接收方读完消息发送消息回执时,消息发送方会收到这一条通知消息,消息发送方可以在这里做发送方消息回执的逻辑判断处理。(通过实现OnChatReceiveListener中的onReceiveMessageNotify方法可以获取到消息被删除的通知),参考文档:IM接收消息监听
代码示例
  •   public void onReceiveMessageNotify(ECMessageNotify msg) {
  •   if(msg.getNotifyType()==NotifyType.READ)
  •   {  //通过if判断代表当前类型是删除阅后即焚的通知
  •   ECMessageReadNotify deleteMsg=(ECMessageReadNotify) msg;
  •      //处理接收方删除阅后即焚消息的通知、比如删除本地图片等
  •    }
  •   }

获取已读未读消息

云通讯平台为开发者提供了获取已读未读消息列表接口,该接口主要用于获取群组已读未读消息。此接口为服务器接口,调整链接:获取已读未读消息

设置会话置顶

sessionId:单聊的话为对方账号,群聊则为群组ID。
API介绍
  • void setSessionToTop(java.lang.String contact,
  •                      boolean isTop,
  •                      ECChatManager.OnSetContactToTopListener listener)
  • 设置会话是否为置顶状态
  • 参数:
  • contact - 会话id
  • isTop - 是否置顶
  • listener - 回调监听
代码示例
  • //获取发送消息管理者
  • ECChatManager chatManager = ECDevice.getECChatManager();
  •         if(chatManager ==null){
  •             return null;
  •         }
  •         //调用置顶接口
  •         chatManager.setSessionToTop(sessionId, isTop, new ECChatManager.OnSetContactToTopListener() {
  •             @Override
  •             public void onSetContactResult(ECError error, String contact) {
  •                 if(error.errorCode==SdkErrorCode.REQUEST_SUCCESS){                    
  •                     Log.d(TAG,"设置成功");
  •             }else {
  •                     Log.d(TAG,"设置失败");
  •             }
  •             }
  •         });

获取置顶会话列表

用户可以通过获取置顶会话,来做本地的展示。
API介绍
  • void getSessionsOfTop(ECChatManager.OnGetSessionsOfTopListener listener)
  • 获取个人设置为置顶的会话列表
  • 参数:
  • listener -回调 
代码示例
  • //获取发送消息管理者
  • ECChatManager chatManager =ECDevice.getECChatManager();
  •                 if(chatManager ==null){
  •                         return;
  •                 }
  •                 //获取置顶
  •                 chatManager.getSessionsOfTop(new ECChatManager.OnGetSessionsOfTopListener() {
  •                         @Override
  •                         public void onGetSessionsOfTopResult(ECError error, String[] sessionsArr) {
  •                                 if (error.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
  •                                         Log.d(TAG,”获取成功");
  •                                 }else{
  •                                         Log.d(TAG,”获取失败");
  •                                 }
  •                         }
  •                 });

获取用户在线状态

专有云提供该接口,获取用户在线状态一次可以传50个账号。
API介绍
  • getUsersState
  • public static void getUsersState(java.lang.String[] userId,
  •                                  ECDevice.OnGetUsersStateListener listener)
  • 批量查询用户状态信息
  • 参数:
  • userId - 用户账号数字
  • l-回调
代码示例
  • ECDevice.getUsersState(new String[]{userId}, new OnGetUsersStateListener() {
  •             @Override
  •             public void onGetUsersState(ECError error, ECUserState... userState) {
  •                 //查询多个用户状态回调 可变数组 userState
  •             }
  •         });
说明:
服务端也提供了获取用户在线的接口。一次可以传100个。
具体参考文档: 获取用户在线状态。 

单应用多证书

专有云支持单应用配置多证书,具体配置指南参考:IM基础功能配置
建议初始化成功后,登录之前调用。
  •  /**
  •      * ECDevice类
  •      * 多证书设置
  •      * @param pushCerKey 推送证书标识,与服务器上传证书保持一致
  •      */ 
  •    ECDevice.setPushCerKey("xxxx");                                                                         

设置网络代理  

  •     /**
  •      * ECDevice类
  •      * 设置网络代理。需要走代理时登录前设置,不支持ssl;socks5代理支持im和点对点(底层将关闭媒体流内网打洞),http代理支持im
  •      * @param proxyHost   代理服务器地址,最大长度255。当设置空时,取消代理
  •      * @param proxyPort   代理端口
  •      * @param authType    鉴权类型。 目前支持 0 不鉴权;2 用户名密码鉴权
  •      * @param userName    用户名,最大长度255。authType=2时有效
  •      * @param userPass    用户名密码,最大长度255。authType=2时有效
  •      * @param proxyType   代理类型。 目前支持 0 socks5代理;1 http代理
  •      * @return
  •      */
  •  ECDevice.setNetworkProxy(proxyHost,proxyPort,authType,userName,userPass,proxyType);