开发指南
敏感信息拦截回调
SDK 从 5.1.4 版本开始支持敏感信息拦截回调。
默认情况下,消息发送方无法感知消息是否已被融云审核服务拦截。如果 App 希望在消息因触发审核规则而无法下发时通知消息发送方,可开通使用敏感信息拦截回调服务。
融云的内容审核服务(包括消息敏感词、IM 审核服务、消息回调服务),可能在以下情况下拦截 消息:
- 文本消息内容命中了融云内置的消息敏感词,导致消息不下发给接收方。
- 文本消息内容命中了您自定义的消息敏感词(屏蔽敏感词),导致消息不下发给接收方。
- 消息命中了 IM 审核服务,或消息回调服务设置的审核规则,导致消息不下发给接收方。
开通服务
您可以在融云控制台,通过应用配置>IM 服务>免费基础功能>安全,开启含敏感词消息屏蔽状态回调发送端。
敏感信息拦截代理委托
在发出的消息被拦截时,SDK 会触发 RCMessageBlockDelegate
的以下方法:
@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
说明typedef 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":"含有敏感信息的文字"}
。内置消息类型的消息内容格式消息类型概述。
设置敏感信息拦截代理委托
注意
该接口在
RCCoreClient
中。
[RCCoreClient sharedCoreClient].messageBlockDelegate = self;