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

SwiftUI App协议下NotificationService Extension未调用问题排查

iOS 16 SwiftUI App中激活NotificationService Extension的解决方案

先确认推送Payload格式是否正确

服务器端除了设置hasMutableContent: true,必须保证Payload里的aps字段包含mutable-content: 1(注意是数字1,不是布尔值true),同时必须有alert节点——哪怕是静默推送,也要留个空的alert占位,否则系统不会触发Extension。示例Payload:

{
  "aps": {
    "alert": {
      "title": "测试标题",
      "body": "测试内容"
    },
    "mutable-content": 1
  }
}

解决SwiftUI @main场景的断点触发问题

蓝色虚线断点说明调试器没关联到Extension进程,按以下步骤操作:

  • 在Xcode顶部的运行目标选择器里,直接选你的NotificationService Extension target,点击运行按钮。
  • 这时Xcode会弹出窗口让你选择要附加的主App进程,选你的SwiftUI主App。
  • 主App启动后,发送符合要求的推送,断点就能正常触发了。

验证Extension的基础配置

  • 检查Extension target的Signing & Capabilities,确保签名配置和主App完全一致(比如都是自动管理签名,或用同一个开发者证书)。
  • 打开Extension的Info.plist,确认NSExtension节点配置正确,默认生成的无需修改:
    <key>NSExtension</key>
    <dict>
      <key>NSExtensionPointIdentifier</key>
      <string>com.apple.usernotifications.service</string>
      <key>NSExtensionPrincipalClass</key>
      <string>$(PRODUCT_MODULE_NAME).NotificationService</string>
    </dict>
    

清理缓存排除干扰

  • 卸载设备上的主App,按Command+Shift+K清理Xcode缓存,重新编译安装主App和Extension。
  • 重启设备,避免系统缓存旧的Extension配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:47:19