与 iOS 个应用共享应用时独立运行 watchOS 应用

Independent operation of watchOS app when sharing app with iOS app

我的 iOS 应用程序使用 CoreData 作为其数据存储,我添加了一个 watchOS 应用程序来配合它。目前 iOS 和 watchOS 应用程序之间的工作流程如下:

  1. watchOS 应用公开了一个菜单,表示 iOS 应用中可用的功能子集
  2. 选择这些选项之一会向 iOS 应用程序发送一条消息,告诉它选择了哪个选项
  3. iOS 应用程序通过将手表为该特定功能所需的任何数据打包到字典中并在回复处理程序中将其发送回手表来做出响应
  4. watchOS 应用程序向用户呈现一个界面,允许他们更改数据中的值
  5. 每次更改都会向 iOS 应用程序发送一条消息,该应用程序会使用新值更新核心数据存储

这工作正常,但显然需要 phone 在整个使用应用程序的过程中连接到手表才能工作。我想知道是否可以使用如下模型:

  1. 同上
  2. 同上
  3. 同上 3a.手表将数据存储在本地
  4. 同上
  5. 每次更改都会更新手表应用的本地数据副本
  6. 用户稍后可以将数据重新检入 iOS 应用程序,此时它会合并到核心数据数据库中

我可以保证冲突不会成为问题,因为用户永远无法修改已经在 phone 上创建的数据(应用程序不需要能够这样做)。

所以我的问题是,后一种情况是否允许 watchOS 应用程序独立于 iOS 应用程序运行,但传输数据除外,这是比我目前处理的方式更可取的方法吗?

手表应用依赖phone更简单。它独立于 phone 运行更加复杂。只有你可以 回答为支持真正的独立性而增加的复杂性是否值得,因为您是必须实施、支持和维护任何所需额外代码的人。

所做的更改是否使手表应用独立?

不,他们不允许手表应用程序独立运行,因为在第 2 步和第 3 步期间手表仍然必须 request/receive 来自 phone 的数据。

要使手表应用在远离 phone 时完全独立,它必须查询 phone 根据需要更新的数据的本地副本,而不是要求 phone 发送手表需要的任何远程数据。

更改是否更可取?

不是现在这样。您提出的延迟更新 phone(即使它仍然可以访问)的更改可能需要很多不必要的代码,这些代码与当前在本地存储数据相关,并在将来将更新合并回 phone。

此外,虽然您承诺目前没有需要处理的合并冲突,但不能保证您将来对应用所做的任何修改都不会引入发生冲突的可能性。

如果您选择建立两个永久性存储,实施合并策略 现在 可以使您的应用不那么脆弱,以避免您的更新完全无法保存,如果未来发生冲突。

真题...

远离 phone(几个小时)进行操作的自由是否值得向用户显示陈旧(或可能误导)的数据?

除非您还提供显示数据何时被 phone 刷新的指示,否则用户可能会认为显示的信息是最新且准确的,即使它可能已有数小时之久。

这在面向用户的 UI 或幕后处理陈旧数据的过程中增加了手表应用程序的复杂性。

请注意,当 Apple Watch 的天气应用无法从 phone 获取当前天气数据时,它根本不显示任何数据(因为用户想知道 当前 温度和降水机会)。