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