我transferUserInfo
用来将统计数据发送到手表。
当手表处于睡眠或空闲状态(显示时钟),并且手机应用程序正在运行时,将会有许多信息正在传输(由重复计时器触发)。
应用程序可以发送多少个“用户信息”队列?有限制吗?
我transferUserInfo
用来将统计数据发送到手表。
当手表处于睡眠或空闲状态(显示时钟),并且手机应用程序正在运行时,将会有许多信息正在传输(由重复计时器触发)。
应用程序可以发送多少个“用户信息”队列?有限制吗?
只有一个队列(由系统提供)。
我不知道transferUserInfo
您可以添加到队列中的消息数量有任何限制。
但是,您应该考虑两件事:
虽然 iOS 将发送消息并能够清空其队列,但那些已发送(尚未处理)的消息将由 watchOS 保留,直到您的应用程序可以接收它们。在某些时候,手表可能无法为您的应用保存更多消息。
虽然我不确切知道 Apple 如何处理这种情况,但您应该计划传输可能会失败,或者更糟的是,被丢弃。
不要围绕试图绕过特定系统的限制来设计您的应用程序,因为它会变得脆弱和崩溃,特别是如果您没有应急措施来处理可能出现的情况。
如果您希望在(短)时间内不断发送(大量)消息,那么这在内存或能源使用方面肯定不会有效。
您应该遵循 Apple 的性能提示来创造积极的用户体验。如果事实证明您的应用程序导致手机和/或手表电池寿命不佳,用户将停止使用它。
以下是一些避免手机和手表之间闲聊通信的替代方法:
使用不同的方法,例如updateApplicationContext
手机和手表只需处理一个上下文,而不是必须单独处理的长长的消息队列。
维护手机上的统计数据;避免在手表请求/需要它们之前传输当前统计信息。(这对于 watchOS 3 来说是一种极好的方法,因为您的应用程序可以在用户启动之前在后台更新)。
批处理您的数据以随着时间的推移发送更少的更新。
同样,不要针对任何特定的数字。一般来说,您可以更新的频率越低越好。
无论您选择哪种方法,请确保您的应用程序是健壮的,并且可以处理任何类型的故障,包括被系统终止(例如内存使用过多或后台 CPU 使用过多)。
这两个 watchOS 会议专门涵盖了更新手表的时间、原因和方式,并提到了围绕特定使用情况安排更新。例如,如果公交没有运行,则不要整夜更新公交信息。
设计出色的 Apple Watch 体验中包含了一个很好的介绍,解释了何时以及为何更新您的手表应用程序。
具体而言,让您的手表应用程序保持最新会话涵盖了使您的复杂功能、应用程序和停靠快照保持最新所需了解的所有内容。