Watch OS的标准设置> 2。
WCSessionDelegate
用于协调主应用程序和Watch之间的数据。
应用程序组"group.***********.TodayExtensionWidget"
用于通过UserDefaults(suiteName: "group.***********.TodayExtensionWidget")
协调主应用程序与其今日扩展程序小部件之间的数据
当我从手表进行更改时,它会将更改与主应用程序进行通信。然后主应用程序(一旦启动)将此信息传达给Today Extension。 我想要做的是将手表应用程序中的更改传递给Today扩展,而无需首先启动主应用程序。
在观看应用和今日推广小部件之间进行通信是否有最佳做法?
答案 0 :(得分:1)
目前无法使用任何内置框架实现此目的。自引入watchOS2
以来,WatchKit
个应用被视为独立应用,而不仅仅是iOS
应用的扩展,因此您无法使用AppGroups
来共享数据两个,尤其是不能用它在WatchKit
应用和iOS
扩展程序之间共享数据。
正如您所经历的那样,WatchConnectivity
无法在Today extension
中使用,所以这也不合适。
您唯一的选择是次优,因为您需要通过watchOS
应用将数据上传到服务器并将其下载到iOS Today extension
。这当然会产生不必要的数据使用,但是使用Apple提供的当前框架,您无法离线共享数据。
但是,如果您等到watchOS4
发布(或试用测试版),您可以利用CoreBluetooth
框架,该框架可用于WatchKit
在watchOS4
中使用WatchKit
在iOS
应用和BLE
扩展程序之间进行脱机通信。我不是100%确定CoreBluetooth
是否可以在iOS Extensions
中使用,但是如果您可以使用watchOS4 beta
,则应该尝试一下。