watchOS中userNotificationCenter(_:didReceive:)回调未触发求助
watchOS通知
userNotificationCenter(_:didReceive:withCompletionHandler:)回调不触发排查方案 确认watchOS应用的通知交互权限
- 检查Info.plist中是否添加
WKAppBackgroundModes字段,并包含remote-notification项 - 验证用户已授予通知权限,且在系统设置(Watch应用→通知→对应应用)中开启了「显示通知」和「允许交互」
- 检查Info.plist中是否添加
校验通知负载配置
- 远程通知必须携带
category字段,且该category已通过UNNotificationCategory在应用中注册 - 负载需包含
mutable-content: 1(用于触发交互回调或自定义通知UI) - 示例有效负载:
{ "aps": { "alert": "测试交互通知", "category": "TEST_INTERACT_CATEGORY", "mutable-content": 1 } }
- 远程通知必须携带
检查Delegate的正确绑定
- 在
application(_:didFinishLaunchingWithOptions:)或SceneDelegate的scene(_:willConnectTo:options:)中,确保执行UNUserNotificationCenter.current().delegate = self - 若使用了通知扩展(Notification Extension),需在扩展的初始化代码中同样设置Delegate
- 在
明确回调触发场景
- 该回调仅在用户点击通知本体或通知中的操作按钮时触发,静默推送、仅显示通知无交互时不会调用
- 本地通知需确保创建时关联了正确的category,且用户执行了交互操作
排查通知扩展的配置问题
- 若使用Notification Content Extension,检查其Info.plist中
NSExtension→NSExtensionAttributes→UNNotificationExtensionCategory是否与通知负载的category完全匹配 - 确认扩展的Deployment Target与主应用一致,且已正确添加到项目目标中
- 若使用Notification Content Extension,检查其Info.plist中
内容的提问来源于stack exchange,提问作者Qazi Ammar
相关产品推荐
相关产品推荐

