5

transferCurrentComplicationUserInfo和 和有什么不一样transferUserInfo

我想将数据从我的 AppDelegate 发送到时钟套件复杂功能。

transferCurrentComplicationUserInfo似乎与transferCurrentUserInfo. 我错过了什么吗?

4

2 回答 2

12

这两种方法的区别在于WCSession数据何时发送,以及watchkit扩展是否被唤醒。

transferCurrentComplicationUserInfo:专为传输复杂功能用户信息而设计,该信息应立即显示在表盘上。

  • 并发症用户信息标记为“紧急”,并放置在队列的最前面,
  • 手表在后台唤醒扩展程序以接收信息,并且
  • 转移立即发生。(其他排队的信息也可能在此时传输。)

transferUserInfo:排队信息,当系统确定是处理队列的好时机时传输:

  • 用户信息放在队列的后面,
  • 如果扩展程序未唤醒,则存储传输的信息,
  • 转移不会立即发生,并且
  • 信息按发送顺序发送。

更多详细信息可以在WWDC 2015 介绍手表连接视频中找到。

iOS 10 更新:

在 iOS 10 中,WCSession添加了一个remainingComplicationUserInfoTransfers属性,该属性可以影响 iOS 将使用哪种方法来传输用户信息:

transferCurrentComplicationUserInfo:您在当天可以通话的剩余次数。如果此属性设置为 0,则transferCurrentComplicationUserInfo:使用任何其他调用来transferUserInfo:代替。

如果复杂功能出现在活动表盘上,则每天为您提供 50 次传输。如果并发症未激活,则此属性默认为 0。

于 2016-01-14T18:19:10.837 回答
1

据我所知:TransferCurrentComplicationUserInfo 在从父应用程序委托调用时具有与 transferCurrentUserInfo 相同的功能,但是,TransferCurrentComplicationUserInfo 也调用 CLKServer......等来更新复杂性。我不得不说我发现两者都不可靠并且我正在努力使用 TransferCurrentComplicationUserInfo 来更新我的应用程序。似乎并不总是有效。令人讨厌的是,它在构建之间会有所不同,而不会更改技术上不应该的代码。那好吧...

于 2015-11-23T07:57:47.257 回答