问题描述
我在watchOS 6/5/4中无法正常工作的并发症在watchOS 7中不起作用。这是针对独立的watchOS应用程序。
尽管我为所有并发症调用了 reloadTimeline ,但似乎没有调用方法 getCurrentTimelineEntry 。如果在sim上运行 getCurrentTimelineEntry 确实会不时被调用,但复杂性不会更新。
那是什么改变了,或者这是watchOS 7中的已知错误?
解决方法
问题是我的 CLKComplicationDataSource 派生类( ComplicationController )从未在设备上被API调用,尽管在模拟器上很少调用它!
因此,API中肯定存在一些错误,这些错误要求该项目针对watchOS 7进行配置/重新编译才能正常工作。
我的配置需要以下新更改:
- 在WatchKit Extension的 Assets.xcassets 中为所有并发症设置并发症图像。在watchOS 6或更低版本中,这是可选的。
- 实施新的 getComplicationDescriptors 并以编程方式声明所有受支持的并发症。在watchOS 7上不再支持在WatchKit Extension的 Info.plist 中声明支持的并发症的旧方法,即使对于使用watchOS 6编译的应用程序