保持核心数据与多个手表同步

Keeping Core Data in sync with multiple watches

我正在编写 iPhone 和 Watch 应用程序。我计划支持将多个手表与 phone.

配对的功能

iPhone 和 Watch 应用程序将读取和写入 Core Data 数据存储,我将使用 WatchConnectivity 使它们保持同步(使用 transferUserInfo:)。用户将 write/dictate 某些东西放在一台设备上,它会出现在另一台设备上。

我正在努力弄清楚如何支持多个手表。给定以下场景:

WatchB 如何与 Phone/WatchA 同步?

Will WKSession automatically replay the transferUserInfo calls that were made when WatchA was paired?

不,不会。数据只会传输到配对的手表。

当您切换回另一只手表时,您必须专门安排更新其商店。

Do I need to somehow keep track of everything WatchB needs and replay everything myself?

简而言之,是的,如果这是您采用的方法。

一种极端情况是,如果用户用 new/replacement 手表更换了 old/broken 手表,但没有取消与旧手表的配对。对于永远不会再次配对的手表,您不会想要跟踪越来越多的变化。

您还必须处理用户升级其 phone 并将现有手表与新 phone 配对的情况。您的设备跟踪和同步应该可以在不同的设备对上继续工作。

Do I just send the entire sqlite database using the fileTransfer API (that seems a bit much)?

这实际上取决于数据库的大小,以及在三个或更多商店之间记录和同步数据的复杂性。

哪些新功能可以帮助我让手表保持最新状态?

如果您必须维护多个商店,您一定要利用 watchOS 3 中的后台刷新任务功能,让您的手表在 用户启动应用程序,因此用户无需等待任何内容同步。

,即使您没有使用并发症。

我还有哪些选择?

Apple 建议您围绕与设备交互的不同方式来设计所有内容。用户可能只想看手表几秒钟来查看某些项目,但要依靠 phone 来完成更复杂的任务。

在这种情况下,您可以在 iPhone 上维护一个商店,并从 iPhone 传输任何需要的数据以显示在手表上。如果有任何变化,将更新后的数据推送回 phone.

"Handoff" 方法效果最好,其中 phone 和手表知道最近的项目是什么,并且用户可以在 phone 和手表之间切换天.

当然,这取决于手表在phone范围外时是否必须独立运行。