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

Ios 保持核心数据与多个手表同步,ios,watchkit,watchos-2,watchos,watchconnectivity,Ios,Watchkit,Watchos 2,Watchos,Watchconnectivity,我正在写一个iPhone和手表应用程序。我计划支持将多个手表与手机配对的功能 iPhone和Watch应用程序都将读取和写入核心数据存储,我将使用Watch连接使它们保持同步(使用transferUserInfo:)。用户将在一台设备上写入/口述某些内容,并在另一台设备上显示 我正在努力找出如何支持多个手表。鉴于以下情况: 用户正在使用电话/手表 在一天中,用户添加了10个项目 一天结束后,他们切换到WatchB WatchB将如何与手机/WatchA同步 WKSession是否会自动

我正在写一个iPhone和手表应用程序。我计划支持将多个手表与手机配对的功能

iPhone和Watch应用程序都将读取和写入核心数据存储,我将使用
Watch连接
使它们保持同步(使用
transferUserInfo:
)。用户将在一台设备上写入/口述某些内容,并在另一台设备上显示

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

  • 用户正在使用电话/手表
    • 在一天中,用户添加了10个项目
  • 一天结束后,他们切换到WatchB
WatchB将如何与手机/WatchA同步

  • WKSession是否会自动重播Watch配对时发出的
    transferUserInfo
    呼叫
  • 我是否需要以某种方式跟踪WatchB需要的所有内容,并自己重播所有内容
  • 我是否只是使用
    transferFile
    API发送整个sqlite数据库(这似乎有点过分)
WKSession是否会自动重播Watch配对时进行的transferUserInfo调用

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

当您切换回另一款手表时,您必须特别安排更新其存储

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

简言之,是的,如果这是你采取的方法

一种边缘情况是,如果用户用新手表/替换手表替换旧手表/损坏的手表,但没有解开旧手表的扣子。你不会想为一块再也不会配对的手表记录越来越多的变化

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

我是否只是使用fileTransfer API发送整个sqlite数据库(这似乎有点过分)

这实际上取决于数据库的大小,而不是在三个或更多存储之间记录和同步数据的复杂性

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

如果您必须维护多个商店,那么您绝对应该利用watchOS 3中的后台刷新任务功能,在用户启动应用程序之前保持您的手表处于最新状态,这样用户就不必等待任何东西进行同步

,即使您没有使用并发症

我的其他选择是什么?

苹果建议你围绕着与设备交互的不同方式来设计一切。用户可能只想浏览手表几秒钟来查看一些项目,但需要依靠手机完成更复杂的任务

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

“切换”方法最有效,手机和手表知道最近的物品是什么,用户可以在白天在手机和手表之间切换


当然,这取决于手表在手机范围之外是否必须独立工作。

我不知道人们拥有多块手表……非常详细的答案,谢谢。我认为我需要重新考虑我的观察策略,因为看起来,为了满足我的需要,构建一个能够在x多个成对设备之间可靠同步的系统非常麻烦。如果你愿意在云中存储数据对象,CloudKit设计用于处理设备之间的同步。我不会鼓励任何人尝试推出自己的系统。这是非常复杂的,你最终会有很多技术债务。让苹果或其他人来管理这些错综复杂的事情吧!:)这是一个非常好的观点,我没有考虑过。实际上,我正在计划为我的v2集成云工具包(希望将v1作为我的主要优先事项),因此这可能是一个将本机云工具包支持(从而同步)带到手机和手表的好时机。同时,根据您的回答,我降低了watch应用程序的复杂性和功能性,这将使我能够更快地出门。在这一点上,多个手表是一个边缘的情况下,无论如何,所以我不想让我了。