transferCurrentComplicationUserInfo 是否更适合并发症更新?

Is transferCurrentComplicationUserInfo more suitable for complication update?

transferCurrentComplicationUserInfotransferUserInfo有什么区别?

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

transferCurrentComplicationUserInfo 似乎与 transferCurrentUserInfo 做的事情完全一样。我错过了什么吗?

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

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

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

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

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

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

可以在 WWDC 2015 Introducing Watch Connectivity video 中找到更多详细信息。

iOS10 的更新:

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

The number of remaining times that you can call transferCurrentComplicationUserInfo: during the current day. If this property is set to 0, any additional calls to transferCurrentComplicationUserInfo: use transferUserInfo: instead.

If the complication is on the active watch face, you are given 50 transfers a day. If the complication is not active, this property defaults to 0.