iOS开发:无法将调试器附加到UNNotificationServiceExtension
解决UNNotificationServiceExtension调试器断点不触发的问题
我之前也踩过这个调试Extension的坑,这种情况大多是调试时机没卡对,或者推送配置有遗漏导致的。试试下面这几个实用的解决方法:
调整调试触发顺序(最常用的修复方式)
你原来的步骤可能时机没匹配上,换个顺序试试:
- 先把主应用运行到设备上,然后点击Xcode的停止按钮结束调试会话
- 在
Testing这个UNNotificationServiceExtension里设置好你要调试的断点 - 选择
Debug > Attach to Process by PID or Name,找到Testing并选中,此时Xcode会显示“Testing正在等待附加” - 现在发送推送通知,当通知抵达设备的瞬间,Extension进程会启动,调试器应该就能触发断点了
检查推送通知的核心配置
一定要确保你的推送payload里包含mutable-content: 1字段!只有带这个字段的通知,才会触发UNNotificationServiceExtension的执行——如果payload里没加这个,Extension根本不会运行,断点自然就没反应。
举个正确的payload示例:
{ "aps": { "alert": { "title": "测试通知", "body": "可被Extension修改的通知内容" }, "mutable-content": 1, "sound": "default" } }
检查Xcode的调试相关配置
- 打开Extension target的
Build Settings,确认Debug Information Format设置为DWARF with dSYM File(Debug和Release模式都可以检查下) - 进入
Edit Scheme,找到Extension target的Run配置,确保Debug executable选项是勾选状态 - 有时候Xcode或者设备的缓存会搞鬼,重启Xcode和你的iPhone,说不定就能解决问题
直接运行Extension Target(更可靠的调试方式)
还有一种更稳妥的操作:
- 在Xcode顶部的scheme选择器里,切换到
Testing这个Extension target - 点击运行按钮,Xcode会弹出窗口让你选择要附加的主应用,选你的主应用就行
- 等主应用启动后,发送带
mutable-content:1的推送通知,断点应该就能正常触发了
希望这些方法能帮你搞定调试问题!
内容的提问来源于stack exchange,提问作者user3427013
相关产品推荐
相关产品推荐

