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

时间:2016-07-25 16:36:53

标签: ios watchkit watch-os-2 watch-os watchconnectivity

我正在写一部iPhone和Watch应用程序。我打算支持将多个手表配对手机的功能。

iPhone和Watch应用程序将读取和写入Core Data数据存储区,我将使用WatchConnectivity使它们保持同步(使用transferUserInfo:)。用户将在一台设备上编写/指示某些内容,它将出现在另一台设备上。

我正在努力弄清楚如何支持多个手表。鉴于以下情况:

  • 用户正在使用Phone / WatchA
    • 在一天中,用户添加了10个项目
  • 一天结束时,他们切换到WatchB

WatchB如何与Phone / WatchA同步?

  • WKSession会自动重播WatchA配对时发出的transferUserInfo来电吗?
  • 我是否需要以某种方式跟踪WatchB所需的一切并自己重播一切?
  • 我是否只使用transferFile API发送整个sqlite数据库(看起来有点多)?

1 个答案:

答案 0 :(得分:3)

  

WKSession会自动重播WatchA配对时的transferUserInfo调用吗?

不,它没赢。数据仅传输到配对的手表。

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

  

我是否需要以某种方式跟踪WatchB需要的所有内容并自己重放所有内容?

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

如果用户使用新的/替换手表替换旧的/损坏的手表,但是没有取消旧的手表,则会出现一个边缘情况。你不会想要跟踪一场不会再次配对的手表的变化。

您还必须处理用户升级手机的情况,并将现有手表与新手机配对。您的设备跟踪和同步应继续在不同的设备对上运行。

  

我是否只使用fileTransfer API发送整个sqlite数据库(看起来有点多)?

这实际上取决于数据库的大小,而不是日记和三个或更多商店之间同步数据的复杂性。

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

如果您必须维护多个商店,那么您应该充分利用watchOS 3中的后台刷新任务功能,以便在用户启动应用之前让您的手表保持最新状态所以用户不必等待任何事情同步。

This answer might be helpful,即使您没有使用并发症。

我的其他选择是什么?

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

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

A"切换"这种方法效果最好,手机和手表都知道最近的物品是什么,用户可以在白天在手机和手表之间切换。

当然,这取决于手表是否必须在手机超出范围时独立操作。