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

Notification Service Extension在iPhone/iPad可运行但M1 Mac无法启动

核心结论

为iOS平台开发的通知服务扩展(NSE)本身不支持在M1系列Mac运行的iOS兼容模式App中被系统调用,这是苹果系统层面的限制,你遇到的问题属于预期行为。

问题原因解释

  • 你看到的failed to fetch ... CodeRequirements-2 error=-10报错是macOS的签名校验失败导致:iOS平台的App扩展签名格式不包含macOS加载扩展所需的代码签名约束,系统判定扩展不符合运行要求,直接拒绝加载,因此不会有NSE运行记录。
  • pluginkit --match能查到扩展但无启用标识、扩展不在系统设置的扩展列表中,都是因为签名校验未通过,系统没有将其识别为可用扩展。

可行解决方案

方案一:适配Mac平台(支持NSE正常运行)

如果需要NSE在Mac设备上正常工作,需要将你的App和扩展都适配Mac运行环境:

  1. 在Xcode中打开项目,分别为主App目标、NSE扩展目标勾选「Mac」作为支持的运行目标,可根据需求选择Mac Catalyst或原生macOS构建方式
  2. 同步更新两个目标的权限配置、Info.plist配置,补全macOS平台所需的通知权限、扩展运行相关声明
  3. 使用支持Mac平台的开发者证书重新签名打包,导出支持Mac运行的通用应用包
    适配完成后,NSE即可和iOS平台一样,在推送展示前被调用完成格式化处理。

方案二:不下发NSE依赖的推送格式(仅兼容展示)

如果暂时不需要适配Mac版本,可在推送服务端做兼容判断:识别到接收设备是M1 Mac运行iOS兼容App时,直接下发最终展示格式的推送 payload,不需要依赖NSE做二次处理。

适配后验证方式

  • 执行pluginkit --match命令可以看到NSE扩展前出现+标识,代表已被系统启用
  • 扩展会自动出现在系统设置的扩展列表中,只要主App获得通知权限即可正常运行,无需用户手动开启
  • 重新运行测试推送,即可在控制台看到NSE的运行日志,推送会按预期格式化后展示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:06:03