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

时间:2015-09-21 21:10:45

标签: ios swift watch-os-2

使用WatchOS2和WatchConnectivity,是否可以唤醒' iOS对应方使用交互式消息传递'

向其发送消息

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

我对如何在WatchOS2中做同样的事情感到有点困惑。因为当我使用“交互式消息传递”时使用WCSession我杀死iOS应用时,不会发送我发送的消息。

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

任何人都可以确认使用WatchOS2中与iPhone通信的预期方式  像CoreData / EventKit / etc这样的原生框架?如果它是有道理的,但我确实希望有人证实这一点。

提前致谢。

2 个答案:

答案 0 :(得分:4)

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

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

  

在WatchKit扩展名处于活动状态时调用此方法   并在后台运行唤醒相应的iOS应用程序   并使其可以访问。

如果无法联系到其他设备,例如因为它超出了范围,您可能需要使用WCSession方法。它会将数据排队并稍后将其传送到对应设备。

答案 1 :(得分:3)

你必须确保在iOS应用程序在后台运行时运行的iOS应用程序的一部分中设置WCSession(UIApplicationDelegate application:didFinishLaunchingWithOptions:将是其中一个点,而任何UIViewController的viewDidLoad 1}}不会是其中之一)