Watch OS > 2 的标准设置。
WCSessionDelegate
用于协调主应用程序和 Watch 之间的数据。
应用程序组 “group.***********.TodayExtensionWidget”
用于通过 UserDefaults(suiteName: "group.***********.TodayExtensionWidget")
当我对 watch 进行更改时,它会将更改与主应用程序进行通信。然后主应用程序(一旦启动)将其传达给 Today Extension。 我想做的是将 watch 应用程序中的更改传达给 Today 扩展程序,而无需先启动主应用程序。
在 watch 应用程序和 Today Extension 小部件之间进行通信是否有最佳实践?
最佳答案
目前无法使用任何内置框架实现此目的。自从引入 watchOS2
以来,WatchKit
应用程序被认为是独立的应用程序,而不仅仅是 iOS
应用程序的扩展,因此您不能使用 AppGroups
在两者之间共享数据,尤其是不能使用它在 WatchKit
应用程序和 iOS
扩展程序之间共享数据。
如您所见,WatchConnectivity
不能在 Today 扩展
中使用,因此这也不在考虑范围之内。
您唯一的选择是次优选择,因为您需要将数据从您的 watchOS
应用程序上传到服务器,并在您的 iOS Today 扩展程序
中下载。这当然会产生不必要的数据使用,但使用 Apple 提供的当前框架,您无法离线共享数据。
但是,如果您等到 watchOS4
发布(或试用测试版),您也许可以利用 CoreBluetooth
框架,该框架即将可用watchOS4
中的 WatchKit
使用 BLE< 在
。我不是 100% 确定 WatchKit
应用程序和 iOS
扩展之间离线通信CoreBluetooth
是否可以在 iOS Extensions
中使用,但如果您可以使用 watchOS4 beta
,您应该尝试一下。
关于swift - 在 WatchOS 和 Today Extension 小部件之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45752905/