差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | 后一修订版 两侧同时换到之后的修订记录 | ||
im:android:basics:message [2020/08/10 03:58] zhaoliang [发送自定义类型消息] |
im:android:basics:message [2020/08/10 04:02] zhaoliang [设置群消息是否需要已读回执(增值服务)] |
||
---|---|---|---|
行 175: | 行 175: | ||
| | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | ==== 发送群消息已读回执 ==== | ||
+ | <code objc> | ||
+ | public void sendAckMessage(EMMessage message) { | ||
+ | if (!validateMessage(message)) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | if (message.isAcked()) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // May a user login from multiple devices, so do not need to send the ack msg. | ||
+ | if (EMClient.getInstance().getCurrentUser().equalsIgnoreCase(message.getFrom())) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | try { | ||
+ | if (message.isNeedGroupAck() && !message.isUnread()) { | ||
+ | String to = message.conversationId(); // do not user getFrom() here | ||
+ | String msgId = message.getMsgId(); | ||
+ | EMClient.getInstance().chatManager().ackGroupMessageRead(to, msgId, ((EMTextMessageBody)message.getBody()).getMessage()); | ||
+ | message.setUnread(false); | ||
+ | EMLog.i(TAG, "Send the group ack cmd-type message."); | ||
+ | } | ||
+ | } catch (Exception e) { | ||
+ | EMLog.d(TAG, e.getMessage()); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | 当发送群已读回执后,消息发送方对应EMMessage的groupAckCount属性会有相应变化; | ||
+ | |||
+ | |||
+ | ==== 群消息已读回调 ==== | ||
+ | |||
+ | <code> | ||
+ | /** | ||
+ | * \~chinese | ||
+ | * 接受到群组消息体的已读回执, 消息的接收方已经阅读此消息。 | ||
+ | * | ||
+ | * \~english | ||
+ | * received message read ack by recipient as message had been read | ||
+ | * | ||
+ | */ | ||
+ | void onGroupMessageRead(List<EMGroupReadAck> groupReadAcks) { | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||