在确定永远不会调用扩展之前,您应该通过“设备”窗格检查监视(控制台)日志消息。扩展程序可能是在后台启动的,并且没有附加到调试器,因此您不会NSLog
在 Xcode 控制台中看到该消息。
更重要的是,您可能已经将一些复杂userInfo
功能从手机转移到手表上,但是一旦手表收到字典,您似乎就没有对字典做任何事情。您要做的不仅仅是传输当前的并发症信息。复杂数据源在被调用时需要访问该信息 getCurrentTimelineEntryForComplication
(作为重新加载时间线的结果)。
可能的原因
你没有分享太多代码,所以我解决了如何transferCurrentComplicationUserInfo actually works
,并提到了我在你的代码中看到的一个不相关的问题。
没有更多代码,很难提供具体的答案,但为了将来可能遇到此问题的其他人,我会尽力提供帮助。
didReceiveUserInfo
以下是您的扩展程序未被调用的一些可能性。
WCSession
您在多个地方激活,并且转移正在(不)由另一位代表处理。
- 您没有对您激活的会话进行引用,并且它超出了范围。
- 该应用程序尚未在 Watch 上打开。
- 会话没有足够快或在正确的位置激活。
transferCurrentComplicationUserInfo
失败并出现错误,因为您的手机已锁定。(这是 Apple 已经承认的已知问题,并且有解决方法。)
代码如何帮助改进您的问题和我们的答案
提供代码的目的是识别或消除某些东西不工作的原因。通常需要代码来帮助回答“为什么这不起作用?” 编程题。
仅仅因为它恰好在模拟器中工作,这并不能保证您“正确设置”。在设备上进行测试会发现在模拟器中测试永远不会发现的错误是合理的。