2016-08-03 280 views
0

我与WatchConnectivity有点混淆。Apple Watch应用程序在iOS应用程序启动时获取数据

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

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

+1

为什么不使用iOS的'updateApplicationContext'来观看watchOS,以及何时启动watchOS应用程序获取数据。您可以随意更改数据,并确保watchOS应用程序能够获取最新数据。 –

回答

2

有一个用户信息和手表应用程序应该在启动时请求这些信息。

当用户浏览手表时,他们为什么需要等待数据被请求,接收,然后在应用程序中更新?

而不是设计手表应用程序来检索用户启动应用程序时的信息,您应该考虑其他方法keep your watch app up to date

  • 对于watchOS 2,还有其他的方法来在后台传输电流的细节,如updateApplicationContextwhich Ahmed mentioned

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

这些方法要么确保信息是已到位,这样用户就不用忍受等待的手表应用程序自行更新。

+0

我使用updateApplicationContext,但首先观看应用程序应该请求用户的数据。我在iOS应用程序中发生特定事件(注销或登录)时更新应用程序上下文。其实我对结构感到困惑,例如我为观察连通性实现了单例类,并且我在appdelegate中创建了一个对象。这种情况是否正确? – TheZipper

+0

评论是不是一个地方问你的代码无关的问题。如果手机在用户登录或注销时更新应用程序(用户数据)上下文,为什么手表需要请求数据?无论是用户登录,手表已经拥有该数据,或用户已注销,手表也知道这一点。手表*仍然需要从手机请求什么数据?如果您的问题没有得到解答,您应该对其进行编辑并添加具体的细节(例如解释手表特别需要请求的内容,显示代码并解释未按预期方式工作的内容)。 – 2016-08-03 16:52:27

0

您可以使用sendMessage方法link to documentation,它是WCSession class的一部分。该方法采用应答处理器:

用于接收来自对方的响应的应答处理器。如果您不想收到回复,请指定nil。

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

0

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

编辑:经过一番研究后,似乎在手表的第一个数据是“到达”,这就是为什么它不能回答时,iOS端的会话不会被激活。

相关问题