问题描述
官方说理论太多。能不能直接点。 我现在是自己建了一个money类继承EMMessage,新建EMMoneyMessageBody遵守了IEMessageBody协议,但不知道initWithChatObject:方法怎么写,环信这里没有开源。。,然后根本就不能发。。。。,发的消息为空白,退出聊天界面再进来,刚刚的空白都不见了,,,, +(instancetype)moneyMessageWithReceiver:(NSString *)receiver{ //构造body EMMoneyMessageBody *body = [[EMMoneyMessageBody alloc] initWithChatObject:nil]; //构造消息 EMMoneyMessage *message = [[EMMoneyMessage alloc] initWithReceiver:receiver bodies:@[body]]; message.messageType = eMessageTypeGroupChat; return message;}
解决方案
不是自定义消息,是发送扩展消息,设置消息的ext,将需要传的数据放在ext中,并自定义一个bubbleview去显示这些数据即可。
解决方案二:
别用pod,直接把easeUI和sdk拖进工程,这样方便自定义发红包的时候就用发送text的方法,ext字典里面自己定义数据和红包类型以区分不同的扩展信息,text文本可以根据你自己产品的需要写,比如产品要求在聊天list页面显示 红包信息时是 [收到红包],那你就传@"[收到红包]",ext里面定义的东西就是你和其他平台app同事定义一套自己的规则就好了展示的时候在bubble里面自己定义一个红包的bubbleview,用autolayout写,创建Bubbleview的地方要所有text类型的地方都要去拆ext的内容,根据里面传的type判断是不是红包,再分别赋值等其他操作 //发送扩展消息- (void)sendTextMessage:(NSString *)text withExt:(NSDictionary*)ext { EMMessage *message = [EaseSDKHelper sendTextMessage:text to:self.conversation.conversationId messageType:EMChatTypeGroupChat messageExt:ext]; [self _sendMessage:message];}- (void)_sendMessage:(EMMessage *)message { if (self.conversation.type == EMConversationTypeGroupChat) { message.chatType = EMChatTypeGroupChat; } else if (self.conversation.type == EMConversationTypeChatRoom) { message.chatType = EMChatTypeChatRoom; } [self addMessageToDataSource:message progress:nil]; __weak typeof(self) weakself = self; [[EMClient sharedClient].chatManager asyncSendMessage:message progress:nil completion:^(EMMessage *aMessage, EMError *aError) { [weakself.tableView reloadData]; }];}