保持核心数据与多个手表同步
Keeping Core Data in sync with multiple watches
我正在编写 iPhone 和 Watch 应用程序。我计划支持将多个手表与 phone.
配对的功能
iPhone 和 Watch 应用程序将读取和写入 Core Data 数据存储,我将使用 WatchConnectivity
使它们保持同步(使用 transferUserInfo:
)。用户将 write/dictate 某些东西放在一台设备上,它会出现在另一台设备上。
我正在努力弄清楚如何支持多个手表。给定以下场景:
- 用户正在使用 Phone/WatchA
- 一天中,用户添加了 10 件商品
- 一天结束后,他们切换到 WatchB
WatchB 如何与 Phone/WatchA 同步?
- WKSession 会自动重播 WatchA 配对时发出的
transferUserInfo
调用吗?
- 我是否需要以某种方式跟踪 WatchB 需要的所有内容并自己重播所有内容?
- 我是否只使用
transferFile
API 发送整个 sqlite 数据库(这似乎有点多)?
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范围外时是否必须独立运行。
我正在编写 iPhone 和 Watch 应用程序。我计划支持将多个手表与 phone.
配对的功能iPhone 和 Watch 应用程序将读取和写入 Core Data 数据存储,我将使用 WatchConnectivity
使它们保持同步(使用 transferUserInfo:
)。用户将 write/dictate 某些东西放在一台设备上,它会出现在另一台设备上。
我正在努力弄清楚如何支持多个手表。给定以下场景:
- 用户正在使用 Phone/WatchA
- 一天中,用户添加了 10 件商品
- 一天结束后,他们切换到 WatchB
WatchB 如何与 Phone/WatchA 同步?
- WKSession 会自动重播 WatchA 配对时发出的
transferUserInfo
调用吗? - 我是否需要以某种方式跟踪 WatchB 需要的所有内容并自己重播所有内容?
- 我是否只使用
transferFile
API 发送整个 sqlite 数据库(这似乎有点多)?
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范围外时是否必须独立运行。