通过WatchConnectivity发送数据时,有效载荷的最大值是多少?

18
使用WatchConnectivity框架发送数据时,无论是从手机到手表还是从手表到手机,当负载达到一定大小后,该框架会返回错误WCErrorCodePayloadTooLarge。据目前所知,苹果文档中并没有详细说明这个大小限制的具体数值,而网络上也缺乏相关信息(仅有4个搜索结果)。但可能支持大于30MB的文件传输,因为iPhone拍摄的原始照片通常都是约36MB,在手表的照片应用程序中也可以正常显示。关于WCErrorCodePayloadTooLarge,可参考WCSession文档,其中描述了被发送的项目超过最大大小限制时会返回此错误。
1个回答

39
根据私有符号 WCPayloadSizeLimitApplicationContext, WCPayloadSizeLimitMessage, WCPayloadSizeLimitUserInfo,iOS 9.0.2 版本的限制如下:
  • 65,536 字节 (65.5 KB) 的消息大小限制
  • 65,536 字节 (65.5 KB) 的用户信息大小限制
  • 262,144 字节 (262.1 KB) 的应用场景大小限制
苹果没有提供文档说明可能是因为通过 WatchConnectivity 发送字典时很难确定它们的确切大小。当然,可接受的大小可能会随着时间而变化。
我没有找到(也没有个人观察到)在发送文件时任何最大大小限制,尽管我注意到当您发送大文件(数百 MB)时似乎不太可靠。

非常感谢!是的,使用transferCurrentComplicationUserInfo:发送一个大于65.5KB的字典作为复杂数据,在WCSession上会失败(从未被传送,iOS 9.2.1,watchOS 2.1)。 - ersjoh
@ersjoh 那么如何发送一个大字典呢?http://stackoverflow.com/questions/42783611/userinfotransfer-payload-is-too-big - toast
@AriX 那么你如何发送一个大字典呢?http://stackoverflow.com/questions/42783611/userinfotransfer-payload-is-too-big - toast
我一直在尝试这个。我猜想苹果没有记录限制是因为他们似乎压缩了数据。 - Daniel Wood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接