根据搜索结果,各平台客户端处理被拦截消息的状态主要涉及以下几个步骤:
开通功能:首先需要开通相关功能,以便客户端能够感知到消息被拦截。此功能不会额外收费。
设置敏感信息拦截监听器:在客户端,需要设置敏感信息拦截监听器,被拦截的消息信息会在此监听器中回调。
获取被拦截消息的详细信息:通过调用特定的方法(如
io.rong.imlib.RongCoreClient#getMessageByUid
)获取被拦截消息的详细信息,包括消息的唯一ID(Uid)。修改消息状态:根据获取到的被拦截消息的详细信息,可以调用相应的方法修改消息状态为发送失败。对于包含UI集成的客户端,可以调用
io.rong.imkit.IMCenter#setMessageSentStatus
方法;对于不包含UI集成的客户端,则调用io.rong.imlib.RongCoreClient#setMessageSentStatus
方法。iOS端处理:iOS端也需要设置敏感信息拦截监听器,并在对应的回调方法中实现修改消息状态的逻辑。例如,通过
RCCoreClient sharedCoreClient
获取被拦截的消息,并调用setMessageSentStatus
方法修改消息的发送状态。消息状态修改代码示例:以下是Android端和iOS端修改消息状态的代码示例:
- Android端:
message.setSentStatus(SentStatus.FAILED); IMCenter.getInstance().setMessageSentStatus(message, null); RongCoreClient.getInstance().setMessageSentStatus(message, null);
- iOS端:
这些步骤和代码示例提供了一个基本的框架,用于在不同平台的客户端中处理被拦截消息的状态。- (void)messageDidBlock:(RCBlockedMessageInfo *)blockedMessageInfo { RCMessage *blockMessage = [[RCCoreClient sharedCoreClient] getMessageByUId:blockedMessageInfo.blockedMsgUId]; [[RCCoreClient sharedCoreClient] setMessageSentStatus:blockMessage.messageId sentStatus:SentStatus_FAILED completion:^(BOOL ret) { // UI刷新处理 }]; }
- Android端: