WatchKit 2.0在收到APNS时检测到

Mik*_*ker 1 push-notification apple-push-notifications ios swift watchkit

我正在创建一个具有聊天功能的Apple Watch应用程序.我想在手表应用程序运行并收到APNS消息时更新聊天对话.我知道AppDelegate,功能

application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 
Run Code Online (Sandbox Code Playgroud)

可以使用,但这只是在设备应用程序在前台运行而不是在后台运行时.在WKUserNotificationInterfaceController,有功能didReceiveRemoteNotification,但仅在使用动态通知时使用.是否可以让监视应用程序处理在不使用动态通知并且在前台运行时收到的远程通知?

小智 6

在创建WatchKit应用程序并使用APNS时,您需要了解有关推送通知如何在Watch端实际工作的一些事项.

1)根据用户活动(iPhone锁定/解锁;使用/不使用Watch),这是iOS系统选择是否通知由Watch处理.

当您的应用程序的本地或远程通知之一到达用户的iPhone时,iOS会决定是在iPhone上还是在Apple Watch上显示该通知.请参阅Doc Apple

2)对于iOS方面,您可以在didReceiveRemoteNotificationapplication(_:didReceiveRemoteNotification:fetchCompletionHandler:)==> 处理所有通知,您可以检查您的应用是否处于前台+处理无声通知.

3)Watch侧的通知有两个不同的入口点:

  • 正如您所说,WKUserNotificationInterfaceController当您的WatchKit应用程序未使用时,会调用它.
  • 并且didReceiveRemoteNotification(_:)在您的ExtensionDelegate课程中,在您的WatchKit应用程序运行时调用.请参阅此处获取完整文档.

如果您需要在应用程序运行时通过APNS更新您的应用程序,您应该在最后一种方法中处理它;)

希望它能帮到你!