2

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

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

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

  • 用户正在使用电话/手表A
    • 在一天中,用户添加了 10 个项目
  • 一天结束,他们切换到 WatchB

WatchB 将如何与手机/WatchA 同步?

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

1 回答 1

5

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

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

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

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

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

一个极端情况是,如果用户用新/替换手表替换旧/损坏的手表,但没有取消旧手表的配对。您不希望为永远不会再次配对的手表跟踪越来越多的更改。

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

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

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

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

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

即使您没有使用并发症,此答案也可能会有所帮助。

我还有哪些其他选择?

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

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

“Handoff”方法效果最好,手机和手表知道最近的项目是什么,用户可以在白天在手机和手表之间切换。

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

于 2016-07-25T17:24:25.920 回答