高级功能
阅后即焚
阅后即焚消息是通过设置消息ECMessage的userData属性来标识的。
我们假设John与Tony单聊时,John发送给Tony一条消息,tony阅读后会自动删除,并且通知john这条消息已经被删除(暂时只支持单聊),则代码如下
接收阅后即焚消息方,即Tony
- //阅后即焚消息删除
- [[ECDevice sharedInstance].messageManager deleteMessage:message completion:^(ECError *error, ECMessage *message) {
- if(error.errorCode == ECErrorType_NoError){// 删除服务器上的消息后,你也需要将本地的消息清空
- }
- }];
阅后即焚通知
在阅后即焚消息接收方删除消息后,发送方会收到消息通知,即John
- //阅后即焚消息删除后,发送方收到通知
- - (void)onReceiveMessageNotify:(ECMessageNotifyMsg *)message {
- if (message.messageType == ECMessageNotifyType_DeleteMessage) {
- ECMessageDeleteNotifyMsg *msg = (ECMessageDeleteNotifyMsg *)message;
- //可删除对应的消息(此处可通过msg.messageId判断删除的消息)
- }
- }
消息撤回
发送消息成功后,如果用户想要撤回此消息时,此接口可以帮用户实现功能,但是发送成功消息必须在两分钟之内。
- /**
- @brief 撤回消息
- @param message 需要撤回的消息
- @param completion 执行结果回调block
- */
- [[ECDevice sharedInstance].messageManager revokeMessage:message
- completion:^(ECError *error, ECMessage *message) {
- __strong typeof(weakSelf)strongSelf = weakSelf;
- NSLog(@"撤回消息 error=%d", (int)error.errorCode);
- if (error.errorCode == ECErrorType_NoError) {
- // 撤回消息成功后,此位置显示为你撤回了一条消息,此消息是需要本地去做,因为不经过服务器。可以仿照demo具体实现
- }}
消息撤回通知
撤回消息通知增加ECMessageRevokeNotifyMsg — 当发送方撤回消息时,接收方会收到这一条通知消息-(void)onReceiveMessageNotify:(ECMessageNotifyMsg*)message,接受方可以在这里做接收方的逻辑判断处理,代码如下:
- -(void)onReceiveMessageNotify:(ECMessageNotifyMsg*)message {
- if(message.messageType==ECMessageNotifyType_RevokeMessage) {
- // 接收方收到对方撤回消息的逻辑处理}
- }
消息回执
当用户接收到消息并且查看此消息时,可以向发送方发送消息已读,这样发送方就可以知道消息是否被读过。
- /**
- @brief 消息已读(接收到的消息)
- @param message 设置已读的消息
- @param completion 执行结果回调block
- */ECMessage *message(接收消息)
- [[ECDevice sharedInstance].messageManager readedMessage:message
- completion:^(ECError *error, ECMessage *amessage) {}
消息回执通知
消息回执通知增加ECMessageIsReadedNotifyMsg — 当接收方读完消息发送消息回执时,消息发送方会收到这一条通知消息-(void)onReceiveMessageNotify:(ECMessageNotifyMsg*)message,消息发送方可以在这里做发送方消息回执的逻辑判断处理,代码如下:
- -(void)onReceiveMessageNotify:(ECMessageNotifyMsg*)message {if(message.messageType==ECMessageNotifyType_MessageIsReaded) {// 消息发送方收到对方回执消息的逻辑处理}}
获取已读未读消息
云通讯平台为开发者提供了获取已读未读消息列表接口,该接口主要用于获取群组已读未读消息。此接口为服务器接口,接口文档:获取已读未读消息。
置顶(取消置顶)会话
是否置顶会话场景:用户可以置顶本地的会话,并且在切换设备时可以调用获取置顶会话列表来达到会话置顶的功能。
- /**
- @brief 是否置顶会话
- @param seesionId 会话id
- @param isTop 0 取消置顶 1 置顶
- */
- seesionId = @”通讯号码”
- isTop = 0/1(“是否置顶0“)
- [[ECDevice sharedInstance].messageManager setSession:sessionId IsTop:isTop
- completion:^(ECError *error, NSString *seesionId) {if (error.errorCode == ECErrorType_NoError) {
- //是否置顶成功失败}}
获取置顶会话列表
用户可以通过获取置顶会话,来做本地的展示。
- /**
- @brief 获取置顶会话列表
- @param completion 执行结果回调block
- */- (void)getTopSession:(void(^)(ECError *error, NSArray *topContactLists))completion{// topContactLists里面包含会话sessionId}