乐趣区

关于ios:iOS开发如何使用融云的消息扩展

【iOS 开发】如何应用融云的音讯扩大

从【4.0.3】版本开始,融云新增了音讯扩大性能,文档如下:
https://docs.rongcloud.cn/v4/…

总结文档中的几个重点:

  • 4.0.3 之前的版本无奈应用。
  • 音讯扩大是 RCMessage 类的属性,也就是说自定义音讯也能够应用。
  • 单条音讯只能设置 300 个 kv,(某些场景不可用,比方在群里发 400 集体可领的红包)。
  • 仅反对单聊、群聊。
  • key 和 value 都是字符串类型,并且 key 不能是中文,否则会报错 INVALID_PARAMETER。
  • 用 IMKit 的 UI 发送音讯时须要拦挡一下,设置音讯扩大开关。

应用步骤:

  1. 音讯的发送端必须给须要音讯扩大的音讯开开关,没有全局设置,只能单条音讯设置。分以下两种状况:
  • 如果应用的是 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 办法将音讯发送进来即可。
  1. 更新和删除扩大的操作能够参考官网文档。
  2. 想要实时捕捉音讯扩大的更改和删除,就须要设置回调,在回调中更新 UI。设置回调可参考官网文档。
退出移动版