Apple Watch 应用程序在 iOS 应用程序启动时获取数据

Apple Watch app getting data when iOS app starts

我对 WatchConnectivity 有点困惑。

我可以从 iOS 应用向手表应用发送数据。但是,我只在 iOS 应用启动或激活时发送数据。

我希望手表应用程序从 iOS 应用程序请求数据。手表应用程序应在启动时请求该信息。

您可以使用 sendMessage 方法 link to documentation, which is part of the WCSession class。该方法采用回复处理程序:

A reply handler for receiving a response from the counterpart. Specify nil if you do not want to receive a reply.

因此,您可以通过发送带有回复处理程序的消息来有效地通知 iOS 应用程序,iOS 应用程序使用该回复处理程序发回数据。

There is a user information and watch application should request these information when it starts.

当用户看一眼他们的手表时,为什么他们必须等待应用程序请求、接收数据然后更新数据?

与其将手表应用设计为在用户启动应用时检索信息,不如考虑其他方法 keep your watch app up to date

  • 对于watchOS 2,还有其他方法可以在后台传输当前详细信息,例如updateApplicationContext

  • 对于 watchOS 3,您还可以使用刷新任务在后台更新手表应用。

这两种方法都可以确保信息已经在手,因此用户无需等待手表应用自行更新。

我遇到了同样的问题。如果我启动 iOS 应用程序,数据只会发送到手表。 我通过在会话 activationDidCompleteWith - 手表方法中向 iOS 应用程序发送一条带有回复处理程序的消息来解决它。它不需要发送任何特定的消息或回复。消息发送到 iOS 应用程序后,updateApplicationContext 触发并将数据发送给 watch。

编辑:经过一些研究,当手表的第一个数据是 "arriving" 时,iOS 端的会话似乎没有激活,这就是它无法回答的原因。