差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
im:ios:basics:message [2020/04/11 06:36] huanxinfudh [发送消息] |
im:ios:basics:message [2020/06/25 02:41] jliu |
||
---|---|---|---|
行 76: | 行 76: | ||
//message.chatType = EMChatTypeChatRoom;// 设置为聊天室消息 | //message.chatType = EMChatTypeChatRoom;// 设置为聊天室消息 | ||
</code> | </code> | ||
+ | |||
+ | ==== 构造表情消息 ==== | ||
+ | |||
+ | 发表情消息实质上是发文本消息。接收方收到文本消息后,首先查询文本消息是否是表情消息,如果是,则显示该文本消息为对应的表情图片。可以使用[[https://unicode.org/emoji/charts/full-emoji-list.html |emoji标准]]来做表情图片和对应的文本字符串的映射。也可以自行维护表情图片和文本字符串的映射。 | ||
+ | |||
+ | <code objc> | ||
+ | /*! | ||
+ | * 初始化表情消息体 | ||
+ | * | ||
+ | * @param aText 表情消息文本串 | ||
+ | * | ||
+ | * @result 表情消息体实例 | ||
+ | */ | ||
+ | - (instancetype)initWithText:(NSString *)aText; | ||
+ | |||
+ | // 调用: | ||
+ | EMTextMessageBody *body = [[EMTextMessageBody alloc] initWithText:@"要发送的表情消息文本串"]; | ||
+ | // 获取当前登录的环信id | ||
+ | NSString *from = [[EMClient sharedClient] currentUsername]; | ||
+ | |||
+ | //生成Message | ||
+ | EMMessage *message = [[EMMessage alloc] initWithConversationID:@"6001" from:from to:@"6001" body:body ext:nil]; | ||
+ | message.chatType = EMChatTypeChat;// 设置为单聊消息 | ||
+ | //message.chatType = EMChatTypeGroupChat;// 设置为群聊消息 | ||
+ | //message.chatType = EMChatTypeChatRoom;// 设置为聊天室消息 | ||
+ | </code> | ||
+ | |||
==== 构造图片消息 ==== | ==== 构造图片消息 ==== | ||
行 900: | 行 927: | ||
*/ | */ | ||
- (void)messagesDidRead:(NSArray *)aMessages; | - (void)messagesDidRead:(NSArray *)aMessages; | ||
+ | </code> | ||
+ | |||
+ | ==== 设置群消息是否需要已读回执(增值服务) ==== | ||
+ | 当消息为群消息时,消息发送方(目前为管理员和群主)可以设置此消息是否需要已读回执,如需要,则设置EMMessage属性isNeedGroupAck为YES,之后发送。 | ||
+ | <code> | ||
+ | @property (nonatomic) BOOL isNeedGroupAck; | ||
+ | </code> | ||
+ | |||
+ | ==== 发送群消息已读回执 ==== | ||
+ | <code objc> | ||
+ | /*! | ||
+ | * \~chinese | ||
+ | * 发送群消息已读回执 | ||
+ | * | ||
+ | * 异步方法 | ||
+ | * | ||
+ | * @param aMessageId 消息id | ||
+ | * @param aGroupId 群id | ||
+ | * @param aContent 附加消息 | ||
+ | * @param aCompletionBlock 完成的回调 | ||
+ | * | ||
+ | * \~english | ||
+ | * Send read acknowledgement for message | ||
+ | * | ||
+ | * @param aMessageId Message id | ||
+ | * @param aGroupId group receiver | ||
+ | * @param aContent Content | ||
+ | * @param aCompletionBlock The callback of completion block | ||
+ | * | ||
+ | */ | ||
+ | - (void)sendGroupMessageReadAck:(NSString *)aMessageId | ||
+ | toGroup:(NSString *)aGroupId | ||
+ | content:(NSString *)aContent | ||
+ | completion:(void (^)(EMError *aError))aCompletionBlock; | ||
+ | |||
+ | // 调用 | ||
+ | // 发送群消息已读回执。在这里写只是为了演示发送,在APP中具体在哪里发送需要开发者自己决定。 | ||
+ | [[EMClient sharedClient].chatManager sendGroupMessageReadAck:@"messageId" | ||
+ | toGroup:@"GroupId" | ||
+ | content:@"回执内容" | ||
+ | completion:^(EMError *aError) | ||
+ | { | ||
+ | if (!aError) { | ||
+ | NSLog(@"发送已读回执成功"); | ||
+ | } else { | ||
+ | NSLog(@"发送已读回执失败的原因 --- %@", aError.errorDescription); | ||
+ | } | ||
+ | }]; | ||
+ | </code> | ||
+ | |||
+ | 当发送群已读回执后,消息发送方对应EMMessage的groupAckCount属性会有相应变化; | ||
+ | <code objc> | ||
+ | @property (nonatomic, readonly) int groupAckCount; | ||
+ | </code> | ||
+ | |||
+ | ==== 群消息已读回调 ==== | ||
+ | |||
+ | <code objc> | ||
+ | /*! | ||
+ | * \~chinese | ||
+ | * 收到群消息已读回执 | ||
+ | * | ||
+ | * @param aMessages 已读消息列表<EMGroupMessageAck> | ||
+ | * | ||
+ | * \~english | ||
+ | * Invoked when receiving read acknowledgement in message list | ||
+ | * | ||
+ | * @param aMessages Acknowledged message list<EMGroupMessageAck> | ||
+ | */ | ||
+ | - (void)groupMessageDidRead:(EMMessage *)aMessage | ||
+ | groupAcks:(NSArray *)aGroupAcks; | ||
</code> | </code> | ||