【发布时间】:2020-03-13 10:48:41
【问题描述】:
我正在开发一个类型为 graphicRectangular 的 watchOS Complication。诸如苹果活动或心率并发症之类的东西。这些更新经常并显示一些图形数据。
我的图表有效 - 在时间轴中显示日历事件。
我不能“每分钟”更新它。在时间线图中为实际时间设置一个标记(检查屏幕截图)会很好。但是这个想法基本上已经消失了,因为我每天只能强制更新时间线 50 次(正如我所读到的)。苹果只是说
如果您的并发症已超出其分配的每日预算 对于执行时间,对此方法的调用什么都不做。
所以我无能为力,对吧?即使我的目标不是将其提交到 AppStore 并获得审核也不行?
现在我开发了一个函数来检查文本是否需要更新(在 13:00 Lorem Ipsum 上方的屏幕截图中)或图形是否已更改,如果是则触发 reloadTimeline() 方法。因此,不仅每次都重新加载它,而且仅在必要时重新加载。但是我应该如何调用这个函数呢?我在后台任务中尝试过,但只检查“当它需要时”——我还在 ExtensionDelegate 中构建了一个可重复的 30 秒计时器。这也有效——但似乎只在 XCode 运行应用程序时有效——如果我在 XCode 中停止,那么图表几乎只会每 15 分钟更新一次(可能是后台任务)。
我还为 storeChanged() 添加了 EventKit 观察者。因此,如果日历发生更改,我可以重新加载图表。在 XCode 处于活动状态的情况下运行应用程序时,这也很有效并且引用速度很快。停止应用程序并在“XCode 之外”的手表上使用它似乎有一个严重的延迟——有时它永远不会工作。
当打开应用程序(点击复杂功能)时,storeChanged() 事件会立即触发(我认为是这个功能——我无法真正调试它,因为连接到 XCode 的每个都运行得非常快)并且在关闭应用程序后并发症被刷新。
storeChanged() 事件被超快触发然后通过 XCode 运行但极其滞后/缓慢/仅在不通过 XCode 运行时打开应用程序时触发,是否有原因?
我的 Timer 在不通过 XCode 运行时不运行是否有原因?使用 XCode 运行时,我可以从这些定时 30 秒的“检查”中看到控制台中的调试打印。但是在 XCode 之外运行时,这些似乎无关紧要。只是很少更新并发症。
另一个例子:今天早上,当我戴上手表时,昨天的图表仍然可见。因此,后台任务或计时器无法通宵工作。打开应用程序时(点击复杂功能),图表会立即刷新。
EventKit 观察者或计时器的正确位置在哪里?
ExtensionDelegate 或 ComplicationController?
【问题讨论】:
标签: swift watchkit watchos eventkit apple-watch-complication