开发指南
敏感信息拦截回调
SDK 从 5.1.4 版本开始支持敏感信息拦截回调。
默认情况下,消息发送方无法感知消息是否已被融云审核服务拦截。如果 App 希望在消息因触发审核规则而无法下发时通知消息发送方,可开通使用敏感信息拦截回调服务。
融云的内容审核服务(包括消息敏感词、IM 审核服务、消息回调服务),可能在以下情况下拦截消息:
- 文本消息内容命中了融云内置的消息敏感词,导致消息不下发给接收方。
- 文本消息内容命中了您自定义的消息敏感词(屏蔽敏感词),导致消息不下发给接收方。
- 消息命中了 IM 审核服务,或消息回调服务设置的审核规则,导致消息不下发给接收方。
开通服务
您可以在融云控制台,在 IM 服务>功能配置>安全&审核>含敏感词消息屏蔽状态回调发送端,开启此功能。
设置敏感信息拦截代理委托
注意
该接口在
RCCoreClient中。
Objective C
[RCCoreClient sharedCoreClient].messageBlockDelegate = self;
实现敏感信息拦截代理方法
在发出的消息被拦截时,IMLib SDK 会触发 RCMessageBlockDelegate 的以下方法:
Objective C
@protocol RCMessageBlockDelegate <NSObject>
/*!
发送消息被拦截的回调方法
@param blockedMessageInfo 被拦截消息的相关信息
*/
- (void)messageDidBlock:(RCBlockedMessageInfo *)blockedMessageInfo;
@end
RCBlockedMessageInfo 里包含了被拦截消息的相关信息:
| 参数 | 类型 | 说明 |
|---|---|---|
| type | RCConversationType | 被拦截消息所在会话的会话类型 |
| targetId | NSString | 被拦截消息所在的会话 Id |
| channelId | NSString | 被拦截消息所在的超级群频道 ID(iOS 端 SDK 从 5.2.4 版本开始支持) |
| blockedMsgUId | NSString | 被拦截消息的唯一 Id |
| blockType | RCMessageBlockType | 消息被拦截的原因,详见下方 RCMessageBlockType 说明 |
| extra | NSString | 被拦截消息的附加信息 |
| sentTime | long long | 被拦截消息的发送时间(Unix 时间戳、毫秒) 。iOS 端 SDK 5.2.4 及以后版本支持。 |
| sourceType | NSInteger | 被拦截的超级群消息的源类型。0:原始消息触发了拦截(默认)。1:消息扩展触发了拦截。2:修改消息后的消息内容处罚了拦截。iOS 端 SDK 5.2.5 及以后版本支持(仅支持超级群)。 |
| sourceContent | NSString | 被拦截的超级群消息或扩展的内容 JSON 字符串。sourceType 字段为 1 时表示扩展内容。sourceType 为 2 时表示修改后的消息内容。详见下方 sourceContent 说明。iOS 端 SDK 5.2.5 及以后版本支持(仅支持超级群)。 |
-
RCMessageBlockType说明Objective Ctypedef NS_ENUM(NSUInteger, RCMessageBlockType) {
/*!
全局敏感词:命中了融云内置的全局敏感词
*/
RCMessageBlockTypeGlobal = 1,
/*!
自定义敏感词拦截:命中了客户在融云自定义的敏感词
*/
RCMessageBlockTypeCustom = 2,
/*!
第三方审核拦截:命中了第三方(数美)或消息回调服务(原模板路由服务)决定不下发的状态
*/
RCMessageBlockTypeThirdParty= 3,
}; -
sourceContent说明sourceType为0时,sourceContent 为 nil。sourceType为1时,sourceContent 是消息扩展内容,示例{"mid":"xxx-xxx-xxx-xxx","put":{"key":"敏感词"}}。mid 为通知信息的 ID。sourceType为2时,sourceContent 是修改后的消息内容,示例{"content":"含有敏感信息的文字"}。内置消息类型的消息内容格式消息类型概述。