在 WatchOS 和 Today Extension 小部件之间传递数据

Communicate data between WatchOS & Today Extension widget

Watch OS > 2 的标准设置。 WCSessionDelegate 用于协调主应用程序和 Watch 之间的数据。

一个应用程序组 "group.***********.TodayExtensionWidget" 用于通过 UserDefaults(suiteName: "group.***********.TodayExtensionWidget")

协调主应用程序与其 Today Extension 小部件之间的数据

当我对手表进行更改时,它会将更改与主应用程序进行通信。然后主应用程序(一旦启动)将其传达给 Today Extension。 我想做的是将手表应用程序中的更改传达给 Today 扩展程序,而无需先启动主应用程序。

在手表应用程序和 Today Extension 小部件之间进行通信是否有最佳实践?

目前无法使用任何内置框架实现此目的。由于 watchOS2 的引入,WatchKit 应用程序被认为是独立的应用程序,而不仅仅是 iOS 应用程序的扩展,因此您不能使用 AppGroups 在应用程序之间共享数据两个,尤其是不能使用它在 WatchKit 应用程序和 iOS 扩展程序之间共享数据。

如您所见,WatchConnectivity 不能用在 Today extension 中,所以这也不在考虑范围之内。

您唯一的选择是次优选择,因为您需要将数据从 watchOS 应用程序上传到服务器并在 iOS Today extension 中下载。这当然会产生不必要的数据使用,但使用 Apple 提供的当前框架,您无法离线共享数据。

但是,如果您等到 watchOS4 发布(或试用测试版),您也许可以利用 CoreBluetooth 框架,该框架可用于 [=11] =] 在 watchOS4 中使用 BLEWatchKit 应用程序和 iOS 扩展程序之间离线通信。我不是 100% 确定 CoreBluetooth 是否可以在 iOS Extensions 中使用,但是如果你可以使用 watchOS4 beta.

,你应该试一试