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

标签 swift watchkit today-extension

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< 在 WatchKit 应用程序和 iOS 扩展之间离线通信。我不是 100% 确定 CoreBluetooth 是否可以在 iOS Extensions 中使用,但如果您可以使用 watchOS4 beta,您应该尝试一下。

关于swift - 在 WatchOS 和 Today Extension 小部件之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45752905/

相关文章:

ios - 在 iOS 8.3 上注册 Nib/Class 单元崩溃

ios - 使用解析查询在 Swift 中调用 REST API

ios - 使用空的 LLDB 目标可能会导致从远程设备读取内存缓慢

ios - 在应用程序和今日小部件之间共享图像资源

ios - 在主机应用程序和今日扩展程序之间共享用户生成的图像的最佳方式是什么

ios - Facebook 在 ios 和 swift 中使用 firebase 登录,但无法获取用户凭据

ios - Watchkit 表行背景颜色以编程方式

ios - WatchKit 错误显示自定义通知的时间太长。回落到静态

swift - 在主应用程序发布的 Today Widget 中观察通知

ios - Swift 2,无法识别的选择器发送到 UIAlertController 的实例