使用 WatchConnectivity 从 Watch 与杀死的 iOS 应用进行通信

Communicate from Watch to killed iOS app using WatchConnectivity

使用 WatchOS2 和 WatchConnectivity,是否可以 'wake up' iOS 对方使用 'interactive messaging' 向它发送消息?

我问的原因是因为我有一个 WatchOS1 应用程序正在使用 openParentApplication 到 send/receive 消息,如果不是 运行,它实际上会唤醒 iOS 应用程序],让它接收我的消息并让它发回响应。之后它再次关闭 iOS 应用程序。

我有点困惑如何在 WatchOS2 中做同样的事情。因为当我使用 'interactive messaging' 使用 WCSession 时,我发送的消息在我终止 iOS 应用程序时未送达。

我还注意到 WatchOS2 现在包含您可以使用的各种框架,例如 NSURLSessionEventKit,它们将所有调用委托给 iPhone。那么也许这是推荐的方法?巧合的是,我的手表应用程序只需要来自 EventKit 的事件即可运行。所以我可以重写我应用程序的 WatchConnectivity 部分以使用 EventKit 代替。如果我的应用程序必须使用 HTTP,我可以直接使用 NSURLSession

谁能确认现在在 WatchOS2 中与 iPhone 通信的预期方式是使用 CoreData/EventKit/等原生框架?如果它是有道理的,但我确实希望有人确认这一点。

提前致谢。

WCSession 是手表与 iOS 设备之间的推荐通信方式。

对于即时通信,请使用 WCSession 实例的 sendMessage:replyHandler:errorHandler: 方法。根据 documentation:

Calling this method from your WatchKit extension while it is active and running wakes up the corresponding iOS app in the background and makes it reachable.

在无法连接到其他设备的情况下,例如因为它超出了范围,您可能想改用 updateApplicationContext:error: 方法。它会对数据进行排队,稍后将其传递给对方设备。

您必须确保在 iOS 应用的一部分中设置 WCSession,当 iOS 应用 运行 处于背景(UIApplicationDelegate application:didFinishLaunchingWithOptions: 将是其中之一,而任何 UIViewController 的 viewDidLoad 都不会是其中之一)