ios - 如何连接和调试自定义 ClockKit Complications Controller ?

标签 ios swift watchos-2 apple-watch-complication clockkit

我正在尝试让自定义 ClockKit Complication 正常工作。

  1. 我创建了一个符合 CLKComplicationDataSource 的自定义 ComplicationController。它作为 CLKComplicationPrincipalClass 添加到 Watch Extension 的 plist。

我可以在 watch 上选择并激活它,但我只看到“----------------”而不是我的实际占位符。

我尝试了什么

  • 我向我的 ComplicationController 添加了自定义 override init(){…} 并在其中放置了一个断点以进行调试。但即使在运行 Complication build scheme 时,也永远不会达到这个断点。我的自定义 ComplicationController 似乎从未实例化。

  • 我确实看到一条日志消息 Extension received request to wake up for complication support。 但我不清楚它在代码中的何处触发。

  • 我还尝试从我的主 InterfaceController 调用以下命令以了解我的事件并发症

    if let server = CLKComplicationServer.sharedInstance() {
        for complication in server.activeComplications {
            server.reloadTimelineForComplication(complication)
        }
    }
    

    ... 但是 server 返回 nil。似乎没有并发症活跃和重新加载。

问题

  • 如何成功连接我的自定义 ComplicationController?

    也欢迎任何额外的调试技巧。

    从 watch 模拟器或 iPhone 上的 watch 应用程序中删除复杂功能通常就足够了吗?还是您需要重新安装整个 watch 应用程序才能看到与复杂功能相关的更新生效?此外,当我在我的自定义 ComplicationController 中记录某些内容时,我应该只在使用 Complications 构建方案或正常的 Watch App 构建方案运行时看到它的输出吗?

欢迎提出任何发现问题的想法。

最佳答案

由于您实际上可以在 watch 上选择复杂功能,因此听起来所有项目都已正确设置。由于它没有达到断点,这听起来像是复杂功能无法找到您的自定义 Controller 。由于您使用的是 swift,因此您需要指定 Controller 的模块。尝试将 watch 应用的 plist 中的 CLKComplicationPrincipalClass 值更改为:

$(PRODUCT_MODULE_NAME).ComplicationController

关于ios - 如何连接和调试自定义 ClockKit Complications Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34536561/

相关文章:

ios - 可以使用 UICollectionViewCompositionalLayout 制作此布局

ios - [NSNull 点大小] : unrecognized selector sent to instance in swift3 while using custom fonts

ios - 在开始时隐藏自定义搜索栏

ios - 将 GraphicsServices 私有(private)框架添加到 IOS

ios - 显示自定义消息的 Swift UIAlertController

swift - 使用 Vapor 4 中的协议(protocol)进行通用流畅查询

ios - 在用户拒绝后请求位置许可。 swift 3. IOS

ios - watchOS 2 在 Swift 中的可达性

ios - 在 WatchOS 2 中从 URL 播放视频

ios - 使用来自 iPhone 的数据更新并发症时间轴