我有一个接收远程通知的AppleWatch应用程序.我希望用户能够从自定义通知操作中打开监视应用程序,并查看通知所涉及的项目.但是,在我的监视应用程序中调试我的通知场景实际上从未将通知内容传递给我的根WKInterfaceController
,并且只是在控制台中不断出现这样的错误:
[default] - [SPRemoteInterface _interfaceControllerID:]:2402:ComF:控制器的interfaceControllerID :( null)未找到(clientIdentifier =(null))
[default] - [SPRemoteInterface _interfaceControllerClientIDForControllerID:]:2414:ComF:interfaceControllerID的clientIdentifier :( null)未找到
[default] - [SPRemoteInterface didFinishHandlingActivity:]:2292:ComF:< - 插件控制器ID(null)(对象:(null))没有客户端标识符
无论我用一个自定义通知UI与否(WKUserNotificationInterfaceTypeCustom
VS Default
),敲击按钮或通知本身不经过我的根接口控制器的任何信息传递.
我已经handleActionWithIdentifier:forNotification:
在我的root中实现了WKInterfaceController
,但它永远不会被调用.我的扩展代表没有实现handleActionWithIdentifier:forNotification:withResponseInfo:
.
我已经尝试将我的WKExtensionDelegate
实现设置为UNUserNotificationCenter
和实现的委托userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
,并且被调用,但我似乎无法访问我的根接口控制器来让它处理内容.我得到上面的错误.
值得注意的是,当我进行代码更改以及构建和运行时,事情似乎偶尔会起作用.但如果我重新运行相同的代码它永远不会工作 - 我总是得到上面的错误消息.
这应该怎么样?它必须是可能的 - 世界上每个使用手表应用程序的信使应用程序都可以做到这一点.但我无法在任何地方找到有关如何将通知有效负载可靠地导入WKInterfaceController
子类的教程或代码示例.
更新:有趣的是,如果我将我的扩展委托设置为UNUserNotificationCenter
代理和句柄userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
,它有时可以工作,但有时我得到上面列出的错误消息,当我试图获取时[WKExtension sharedExtension].rootInterfaceController
,它就是nil
.