【iOS 开发】如何应用融云的音讯扩大
从【4.0.3】版本开始,融云新增了音讯扩大性能,文档如下:
https://docs.rongcloud.cn/v4/…
总结文档中的几个重点:
- 4.0.3 之前的版本无奈应用。
- 音讯扩大是 RCMessage 类的属性,也就是说自定义音讯也能够应用。
- 单条音讯只能设置 300 个 kv,(某些场景不可用,比方在群里发 400 集体可领的红包)。
- 仅反对单聊、群聊。
- key 和 value 都是字符串类型,并且 key 不能是中文,否则会报错 INVALID_PARAMETER。
- 用 IMKit 的 UI 发送音讯时须要拦挡一下,设置音讯扩大开关。
应用步骤:
- 音讯的发送端必须给须要音讯扩大的音讯开开关,没有全局设置,只能单条音讯设置。分以下两种状况:
- 如果应用的是 IMKit 提供的 UI 发送音讯,或者应用 RCConversationViewController 中的 sendMessage 和 sendMediaMessage 办法发送音讯,都会触发上面回调:
/*!
筹备发送音讯的回调
@param messageContent 音讯内容
@return 批改后的音讯内容
@discussion 此回调在音讯筹备向外发送时会回调,您能够在此回调中对音讯内容进行过滤和批改等操作。如果此回调的返回值不为 nil,SDK 会对外发送返回的音讯内容。*/
- (RCMessageContent *)willSendMessage:(RCMessageContent *)messageContent;
在回调中判断如果是须要扩大的音讯,就依据 messageContent,本人结构一个 RCMessage 对象,并设置好 canIncludeExpansion 和 expansionDic。
RCMessage *message = [[RCMessage alloc] initWithType:self.conversationType targetId:self.targetId direction:MessageDirection_SEND messageId:0 content:messageContent];
message.canIncludeExpansion = YES;
message.expansionDic = dict;
再调用 RCIM 中对应的 send 办法将音讯发送进来,并且在筹备发送音讯的回调中 return nil。
- 如果是本人调用 RCIM 和 RCIMClient 接口发的音讯,用 RCMessageContent 类的对象结构一个 RCMessage 对象,而后设置 canIncludeExpansion 和 expansionDic 再调用 RCIM 中对应的 send 办法将音讯发送进来即可。
- 更新和删除扩大的操作能够参考官网文档。
- 想要实时捕捉音讯扩大的更改和删除,就须要设置回调,在回调中更新 UI。设置回调可参考官网文档。