【问题标题】:Apple Watch app getting data when iOS app startsApple Watch 应用程序在 iOS 应用程序启动时获取数据
【发布时间】:2016-08-03 13:58:11
【问题描述】:

我对@9​​87654321@ 有点困惑。

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

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

【问题讨论】:

  • 为什么不使用updateApplicationContext 从 iOS 到 watchOS 并在 watchOS 应用程序启动时获取数据。您可以随意更改数据,并保证 watchOS 应用程序将获取最新数据。

标签: ios apple-watch watchos-2 watchconnectivity


【解决方案1】:

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

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

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

  • 对于watchOS 2,还有其他方式可以在后台传输当前的详细信息,例如updateApplicationContextwhich Ahmed mentioned

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

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

【讨论】:

  • 我使用了 updateApplicationContext 但是首先手表应用程序应该请求用户的数据。当 iOS 应用程序中的特定事件(注销或登录)发生时,我正在更新应用程序上下文。实际上我对结构感到困惑,例如我为手表连接实现了单例类,并在 appdelegate 中创建了一个对象。对于这种情况,它是正确的方法吗?
  • 评论不是询问与您的代码无关的问题的地方。如果手机在用户登录或注销时更新应用程序(用户数据)上下文,为什么手表需要请求数据?要么用户已登录,手表已经拥有该数据,要么用户已注销,手表也知道这一点。手表仍然需要从手机请求哪些数据?如果您的问题没有得到解答,您应该对其进行编辑并添加具体的详细信息(例如,解释手表具体需要什么请求,显示您的代码,并解释什么没有按照您的预期工作)。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    您可以使用sendMessage 方法link to documentation,它是WCSession class 的一部分。该方法接受一个回复处理程序:

    一个回复处理程序,用于接收对方的回复。如果您不想收到回复,请指定 nil。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多