当 iOS 在后台并收到远程通知时发送数据到 Watch

Posted

技术标签:

【中文标题】当 iOS 在后台并收到远程通知时发送数据到 Watch【英文标题】:Sending Data to Watch when iOS in background and Remote Notifcation Received 【发布时间】:2016-10-08 20:15:30 【问题描述】:

我正在使用sendMessageData(_:replyHandler:errorHandler:) 将信息从 ios 发送到 Watch OS。这可以正常工作,并且当 iOS 在我使用过的其他应用程序的后台时也可以正常工作。但是,当 iOS 在后台并且由于远程通知而调用该方法时,它似乎不起作用。

当 iOS 在后台并且有远程通知进入时,iOS 会触发一些进程。这些都有效,但是当它向手表发送数据时,这就是失败的地方。如果 iOS 应用在前台并且同样的远程通知进来,通过上述方法向手表发送数据是有效的。

当 iOS 在后台并且调用是由 iOS 处理的远程通知导致时,iOS 有没有办法向手表发送数据?

【问题讨论】:

【参考方案1】:

来自https://developer.apple.com/reference/watchconnectivity/wcsession的文档:

SendMessageData() 是“用于您的 iOS 应用和 WatchKit 扩展之间的即时通信”

在我有类似情况的应用程序中,我使用 transferUserInfo()“在后台传输数据字典”,这在传输数据时更可靠,尤其是在后台。

希望有帮助!

【讨论】:

只要你有可达性,你就可以在 iOS 后台使用 sendMessageData。我在另一个应用程序中成功地做到了这一点,唯一的区别是发送是由 APN 与我的另一个应用程序中的后台位置更新引起的。我这里确实有可达性。尽管如此,我还是尝试了转移过程,但结果是一样的。

以上是关于当 iOS 在后台并收到远程通知时发送数据到 Watch的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在 iOS 11 中处于后台时未收到推送通知

当应用程序处于终止状态时,iOS 静默推送通知不会收到

在 iOS 上,我的应用如何获取手机在后台时收到的通知数据?

iOS 在收到静默远程通知后发送本地通知

收到带有数据的远程通知时激活 iOS 应用程序

收到推送通知时在后台执行代码