差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
im:android:basics:message [2020/07/17 03:04] liujn [发送文件消息] |
im:android:basics:message [2020/08/10 04:02] zhaoliang [设置群消息是否需要已读回执(增值服务)] |
||
---|---|---|---|
行 163: | 行 163: | ||
| | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | ==== 设置群消息是否需要已读回执(增值服务) ==== | ||
+ | 当消息为群消息时,消息发送方(目前为管理员和群主)可以设置此消息是否需要已读回执,如需要,则设置EMMessage的方法setIsNeedGroupAck()为YES,之后发送。 | ||
+ | <code> | ||
+ | public EMMessage createDingMessage(String to, String content) { | ||
+ | EMMessage message = EMMessage.createTxtSendMessage(content, to); | ||
+ | message.setIsNeedGroupAck(true); | ||
+ | return message; | ||
+ | } | ||
+ | | ||
+ | </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> | ||
+ | |||
+ | |||
==== 发送扩展消息 ==== | ==== 发送扩展消息 ==== | ||
行 389: | 行 453: | ||
===== 导入消息到数据库 ===== | ===== 导入消息到数据库 ===== | ||
+ | 如果有从2.x SDK或者其他第三方SDK升级到目前3.x SDK的需要,可以使用下面的接口,构造EMMessage 对象,将历史消息导入到本地数据库中。 | ||
<code java> | <code java> | ||
EMClient.getInstance().chatManager().importMessages(msgs); | EMClient.getInstance().chatManager().importMessages(msgs); |