如何连接和调试自定义ClockKit并发症控制器?

时间:2015-12-30 20:11:43

标签: ios swift watch-os-2 apple-watch-complication clockkit

我正在尝试使用自定义ClockKit Complication。

  1. 我创建了一个符合CLKComplicationDataSource的自定义 ComplicationController 。它被添加到Watch Extension的plist CLKComplicationPrincipalClass
  2. 我可以在手表上选择一个复杂功能并激活它,但我只看到" ---------------"不是我的实际占位符。

    我尝试了什么

    • 我在我的ComplicationController中添加了自定义override init(){…}并在其中放置了一个断点用于调试。但即使运行复杂性构建方案,也永远不会达到这个断点。似乎我的自定义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?

      欢迎任何其他调试提示。

      通常足以从iPhone上的手表模拟器或手表应用程序中删除并发症,还是需要重新安装整个手表应用程序以查看有效的并发症相关更新?另外,当我在我的自定义ComplicationController中记录某些内容时,我应该只在使用Complications构建方案运行时或者使用正常的Watch App构建方案时才能看到它的输出吗?

    欢迎任何寻找问题的想法。

1 个答案:

答案 0 :(得分:10)

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

$(PRODUCT_MODULE_NAME).ComplicationController