我怎样才能在后台唤醒我的 iPhone 应用程序以 运行 一个函数并将结果 return 发送到 Apple Watch?

How can I awake my iPhone app in the background to run a function and return the results to Apple Watch?

我的 Apple Watch 应用程序中有一个 table,它由来自 iPhone 应用程序的数据填充。

在 iPhone 应用程序上,我需要从互联网上获取这些数据。在 phone 上,该函数称为 retrieveData()。我还有一个名为 sendToWatch() 的函数,它会在 phone 应用程序打开时将此数据发送到手表。

我想找到一种无需打开 phone 应用程序即可 运行 retrieveData() 和 sendToWatch() 的方法。过去几个小时我一直在研究这个问题,它看起来很复杂。

我已经尝试过 Apple 文档中的 openParentApp 功能,但我不知道如何设置它或如何实现它。在过去的几个小时里,我尝试在网上搜索教程,但一切都已经过时了,我没有运气。

有人知道这方面的任何好的教程吗?

如您所知,您不能在 watchOS 2 中使用 openParentApp。您可以使用 Watch Connectivity 而不是 openParentApp

参考。 http://www.kristinathai.com/watchos-2-how-to-communicate-between-devices-using-watch-connectivity/

下面是一个例子。

1) 从 Apple Watch

调用 sendMessage 方法
WCSession.defaultSession().sendMessage(applicationDict,
   replyHandler: { ([String : AnyObject]) → Void in
      // Handle reply
   })
   errorHandler: { (NSError) → Void in
      // Handle error
});

2) 在您的 iPhone

中调用了 didReceiveMessage 方法

运行 retrieveData() 并通过此方法向 Apple Watch 发送数据。

func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
    // run retrieveData()

    // send data to Apple Watch
    replyHandler(["retrievedData" : data])
}

3) 在 Apple Watch

中接收数据 replyHandler

祝你好运!