swift 当iOS在后台和收到远程通知时发送数据以观看

jjhzyzn0  于 11个月前  发布在  Swift
关注(0)|答案(2)|浏览(148)

我正在使用sendMessageData(_:replyHandler:errorHandler:)从iOS发送信息到Watch OS.这很好用,当iOS在后台时也很好用,根据我使用过的其他应用程序.然而,当iOS在后台时,它似乎不工作,该方法被调用作为远程通知的结果.
当iOS处于后台并且远程通知进入iOS时,iOS会触发一些进程。这些进程都可以工作,但当它向手表发送数据时,这就是它失败的地方。如果iOS应用处于前台并且相同的远程通知进入,则通过上述方法向手表发送数据可以工作。
当iOS处于后台并且调用是iOS处理的远程通知的结果时,iOS是否有方法向手表发送数据?

xe55xuns

xe55xuns1#

来自https://developer.apple.com/reference/watchconnectivity/wcsession的文档:
SendMessageData()“用于iOS应用程序和WatchKit扩展之间的即时通信”
在我的应用程序中,我有一个类似的场景,我使用transferUserInfo()“在后台传输数据字典”,这在传输数据时更可靠,特别是在后台。
希望有帮助!

xnifntxz

xnifntxz2#

我不确定我在下面的部分中理解了你的问题- “当iOS处于后台并且iOS中出现远程通知时,会触发一些进程。"
然后远程通知出现它不执行任何代码,所以它显然不会发送数据。如果您在扩展中使用了处理远程通知的方法,那么这可能是可能的。但是您需要快速完成此操作并将代码 Package 到后台任务中。否则,iOS将杀死您的应用,您永远不会知道发生了什么。
我建议写一个简单的记录器,将消息写入文件并同步关闭文件。它将允许调试后台发生的事情。
一旦你捕捉到代码被执行,注意发送是否成功(使用replayback或errorback)。如果你看不到这些调用的日志消息,那么很可能iOS杀死了你的应用。
然后尝试在任何工作之前添加后台任务并正确结束它(加上实现过期处理程序),并再次验证日志。

相关问题