transferUserInfo可以生成多少个队列

时间:2016-08-26 04:17:19

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

我正在使用transferUserInfo向手表发送统计数据。

当手表处于睡眠或闲置状态(显示时钟)且手机应用程序正在运行时,将会有许多信息被传输(由重复计时器触发)。

应用程序可以发送多少个“userinfo”队列?有限制吗?

1 个答案:

答案 0 :(得分:1)

只有一个队列(由系统提供)。

我不知道您可以添加到队列的transferUserInfo消息数量有任何限制。

但是,您应该考虑两件事:

  • 虽然iOS会发送消息并能够排空其队列,但发送(但尚未处理)的消息将由watchOS保留,直到您的应用程序可以接收它们。在某些时候,手表可能无法再为您的应用程序保留任何消息。

    虽然我不确切知道Apple如何处理这种情况,但你应该计划转移可能会失败,或者更糟,被丢弃。

    不要设计你的应用程序试图绕过特定系统的极限,因为它会脆弱和破坏,特别是如果你没有应急可能出现的可能情况。

  • 如果您希望在短时间内不断发送(大量)消息,这在内存或能源使用方面肯定不会有效。

    您应该关注Apple的performance tips以创造积极的用户体验。如果事实证明您的应用程序导致电话不良和/或看电池寿命,则用户将停止使用它。

更好的方法

以下是一些避免手机和手表之间通信频繁的替代方法:

  • 使用其他方法,例如updateApplicationContext,因此手机和手表只需要处理单个上下文,而不是必须单独处理的长队列消息。

  • 维护手机的统计数据;避免传输当前的统计数据,直到手表请求/需要它们。 (对于watchOS 3来说,这是一个很好的方法,因为你的应用程序可以在后台更新,在用户启动之前)。

  • 批量处理数据,以便随着时间的推移发送更少的更新。

    • 如果您没有更新并发症,请不要计划每小时更新一次非活动应用。
    • 如果您要更新并发症,请务必每小时更新4次以上(但最好不要超过每小时一次)。

同样,不要针对任何特定的数字。一般情况下,更新的频率越低越好。

无论您选择哪种方法,都要确保您的应用程序功能强大,并且可以处理任何类型的故障,包括由系统终止(例如过多的内存使用或过多的后台CPU使用)。

了解更多信息

这两个watchOS会议专门介绍何时,为何以及如何更新您的手表,并提及有关特定用途的计划更新。例如,如果没有运输,则不要在整个晚上更新公交信息。