You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS短信过滤器配置subAction后分类不生效(iOS16)求助

iOS16 短信过滤器 subAction 分类推广/交易短信失效问题排查与解决

针对iOS16上短信过滤器无法通过subAction将短信分类为推广或交易类的问题,结合你的代码,从以下核心点排查解决:

1. 必须正确声明支持子动作的能力

你的ILMessageFilterCapabilitiesQueryHandling实现中未明确声明支持推广和交易类子动作,iOS16要求过滤器必须先告知系统自身支持这些分类,否则会忽略subAction设置。修改方法如下:

func handle(_ capabilitiesQueryRequest: ILMessageFilterCapabilitiesQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void) {
    let response = ILMessageFilterCapabilitiesQueryResponse()
    // 明确声明支持推广、交易类子动作
    response.promotionalSubActions = [.promotion]
    response.transactionSubActions = [.transaction]
    completion(response)
}

2. 确保Action与SubAction的严格配对

系统要求动作与子动作必须严格对应:

  • 当action为.promotion时,subAction必须是.promotion
  • 当action为.transaction时,subAction必须是.transaction

检查你的ClassificationType的getAction()和getSubAction()方法,确保映射逻辑正确,示例如下:

// 假设你的自定义分类枚举是ClassificationType
extension ClassificationType {
    func getAction() -> ILMessageFilterAction {
        switch self {
        case .promotion: return .promotion
        case .transaction: return .transaction
        default: return .none
        }
    }
    
    func getSubAction() -> ILMessageFilterSubAction {
        switch self {
        case .promotion: return .promotion
        case .transaction: return .transaction
        default: return .none
        }
    }
}

3. 验证iOS16的特殊约束

  • 仅当action设置为.promotion或.transaction时,对应的subAction才会生效,不能将这些子动作与.junk、.allow等动作搭配
  • 确保短信过滤器在系统设置中已启用:设置 -> 短信 -> 已过滤信息,确认你的应用开关打开,且推广/交易分类选项处于启用状态

4. 调试日志验证

在返回响应前添加日志,确认分类逻辑是否正确触发:

case .allow, .junk, .promotion, .transaction:
    let response = ILMessageFilterQueryResponse()
    response.action = offlineAction
    response.subAction = offlineSubAction
    // 打印验证返回值
    print("分类结果:动作=\(offlineAction),子动作=\(offlineSubAction)")
    completion(response)

通过控制台日志确认classifyHandler是否正确返回了预期的动作和子动作。

5. 检查扩展配置

确保短信过滤扩展的Info.plist配置正确,NSExtension的NSExtensionAttributes中包含ILMessageFilterExtensionEnabled并设置为YES,如果使用网络请求,需正确配置ILMessageFilterNetworkURL。


内容的提问来源于stack exchange,提问作者Qixiny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:40:43