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

问题描述 投票:0回答:2

我正在使用

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

当 iOS 在后台运行并且收到远程通知时,iOS 会启动一些进程。这些都可以工作,但是当它向手表发送数据时,这就是失败的地方。如果iOS应用程序在前台并且收到相同的远程通知,则可以通过上述方法向手表发送数据。

当 iOS 处于后台且调用是 iOS 处理的远程通知的结果时,iOS 是否有办法将数据发送到手表?

swift apple-watch wcsession
2个回答
0
投票

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

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

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

希望有帮助!


0
投票

我不确定我在接下来的部分中是否遵循了您的问题 - “当 iOS 处于后台且远程通知传入时,iOS 会启动一些进程。”

然后出现远程通知,它不执行您的任何代码,因此它显然不会发送数据。如果您在扩展中使用了处理远程通知的方法,那么这可能是可能的。但您需要快速完成此操作并将代码包装到后台任务中。否则,iOS 将杀死您的应用程序,您将永远不知道发生了什么。

我建议编写一个简单的记录器,将消息写入文件并同步关闭文件。它将允许调试后台发生的事情。

一旦您发现代码已执行,请注意发送是否成功(使用 replayHandler 或 errorHandler)。如果您看不到这些调用的日志消息,那么 iOS 可能会杀死您的应用程序。

然后尝试在任何工作之前添加后台任务并正确结束它(加上实现过期处理程序),并再次验证日志。

© www.soinside.com 2019 - 2024. All rights reserved.