【问题标题】:Is transferCurrentComplicationUserInfo more suitable for complication update?transferCurrentComplicationUserInfo 更适合并发症更新吗?
【发布时间】:2015-10-24 09:41:31
【问题描述】:
transferCurrentComplicationUserInfo 和 transferUserInfo 有什么区别?
我想将数据从我的 AppDelegate 发送到时钟套件复杂功能。
transferCurrentComplicationUserInfo 似乎与transferCurrentUserInfo 做同样的事情。我错过了什么吗?
【问题讨论】:
标签:
watchkit
apple-watch
apple-watch-complication
clockkit
wcsession
【解决方案1】:
这两个WCSession方法的区别在于数据何时发送,以及watchkit扩展是否被唤醒。
transferCurrentComplicationUserInfo: 专门用于传输要立即显示在表盘上的复杂功能用户信息。
- 并发症用户信息被标记为“紧急”,并被放置在队列的最前面,
- 手表在后台唤醒扩展程序以接收信息,并且
- 传输立即进行。 (其他排队的信息也可能在此时传输。)
transferUserInfo: 排队信息,当系统确定是处理队列的好时机时传输:
- 用户信息放在队列的最后,
- 如果分机未唤醒,则存储传输的信息,
- 传输不会立即发生,并且
- 信息按发送顺序传递。
更多详情请见WWDC 2015 Introducing Watch Connectivity video。
iOS 10 更新:
在 iOS 10 中,WCSession 添加了一个 remainingComplicationUserInfoTransfers 属性,该属性可以影响 iOS 将使用哪种方法来传输用户信息:
当天您可以拨打transferCurrentComplicationUserInfo: 的剩余次数。如果此属性设置为 0,则对 transferCurrentComplicationUserInfo: 的任何其他调用都将使用 transferUserInfo:。
如果复杂功能出现在活动表盘上,则每天为您提供 50 次传输。如果并发症未激活,则此属性默认为 0。
【解决方案2】:
据我所知:
TransferCurrentComplicationUserInfo 从父应用程序委托调用时与 transferCurrentUserInfo 具有相同的功能,但是,TransferCurrentComplicationUserInfo 还调用 CLKServer......等来更新复杂性。我不得不说我发现两者都不可靠,而且我正在努力使用 TransferCurrentComplicationUserInfo 来更新我的应用程序。似乎并不总是有效。烦人的事情是,它在构建之间会有所不同,而无需更改从技术上讲是不可能的代码。哦,好吧……