问题标签 [apple-watch-complication]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apple-watch - 使数据复杂化:未调用 ExtensionDelegate
(看起来其他人在前几周遇到过这个问题,但我没有找到任何解决方案。)
我正在尝试做一件非常基本的事情:从我的 iOS 应用程序或我的 Watch 应用程序获取数据到我的复杂控制器。
事实证明,我做这件事的能力比我想象的要差。watchOS 2 过渡指南表明我应该使用以下代码“从扩展委托中获取所需的数据”:
伟大的。除了,我无法弄清楚如何让它在扩展方面工作。尽管更重要的是,我似乎根本无法从复杂控制器启动中运行扩展委托代码。当我运行复杂功能时,我收到以下消息:“扩展收到唤醒复杂功能支持的请求。” 但是,任何扩展委托的方法中的代码似乎都没有运行。我还在每个方法中设置了断点,并且没有一个断点被命中。
看起来“transferCurrentComplicationUserInfo:”也被建议用于复杂功能更新,尽管目前还不清楚它是如何使用的。据我所知,它用于唤醒手表扩展,以便 ExtensionDelegate 可以存储新数据以供下次复杂控制器运行时使用,但由于上一个问题,我无法确认。
我有一个可能的解决方法(从复杂控制器 ping 服务器并希望会话变量持续存在,以便我可以发送相关数据),但是如果我不能解决这个问题,我的复杂工作很有可能会被淹没。这里的任何帮助都是巨大的。
顺便说一句,这是我为“getCurrentTimelineEntryForComplication”提供的代码,如果这有帮助的话。
objective-c - ios中的openParentApplication调用没有打开我的父应用程序
我需要知道如何打开我的 iphone 的父应用程序。我有一块1.0.1 版本的手表,父应用程序有8.4 iOS。
这是我在AppDelegate
这就是我回复信息的方式:
但是我的父应用程序没有打开。
我的错误是什么!请帮忙
ios - watchkitapp 未能及时更新场景
Watchkit 扩展中有一个方法可以在 tableview 中显示项目。大约有 500 多个项目,内存从 2.9mb 增加到 7.8mb,手表应用程序崩溃。方法如下:
在设备日志中,我可以看到这条消息“watchkitapp 未能及时更新场景”
如何修复此崩溃?是内存造成的还是手表tableview加载500项的等待时间过长?
apple-watch - Control Apple Watch's Brightness programmatically
Is there any way to control Apple Watch's Brightness programmatically?
watchkit - 在 watchOS 2 下处理复杂功能
我有一个包含不同类型条目的时间线,我需要一种方法来将用户导航到特定的界面控制器(或相同的控制器但具有不同的上下文),具体取决于已点击的条目类型。有什么方法可以处理 watchOS 2 下的并发症?
swift - WatchKit 2 并发症文本仅在预览中显示
我正在尝试为watchkit 2 开发一个非常简单的复杂功能,它从一个简单的文本提供程序中说“嗨”。
我设法实现了一些奇怪的行为;单击复杂功能或从自定义表盘屏幕预览时,我可以看到文本,但在显示表盘时看不到。看一看:
有什么想法可能导致这种情况吗?
我的文本提供程序看起来像这样
我的得到getPlaceholderTemplateForComplication
看起来像
ios - 使用来自 iPhone 的数据更新并发症时间线
我正在尝试为 watchOS 2 GM 编写一个复杂功能,显示它使用 WCSession 从我的 iPhone(iOS 9 GM)获得的值。
不幸的是,我在发送消息时收到以下错误:
这就是我的代码在 ComplicationController.swift 中的样子:
这是我的 ExtensionDelegate.swift:
最后是我的 iOS AppDelegate:
有任何想法吗?
提前致谢!
ios - 何时何地获取手表复杂功能的数据
在处理了几天的并发症后,我有信心对按规定时间间隔发生的更新的更新过程说以下内容:
- 系统调用
requestedUpdateDidBegin()
- 您可以在此处确定您的数据是否已更改。如果没有,您的应用程序无需执行任何操作。如果您的数据已更改,您需要致电:
reloadTimelineForComplication
如果您的所有数据都需要重置。extendTimelineForComplication
如果您只需要在并发症时间线的末尾添加新项目。
- 注意:系统实际上可能会调用
requestedUpdateBudgetExhausted()
,而不是requestedUpdateDidBegin()
如果您在当天花费了过多的并发症时间预算。这就是这个问题的原因。
- 您可以在此处确定您的数据是否已更改。如果没有,您的应用程序无需执行任何操作。如果您的数据已更改,您需要致电:
- 如果您调用
reloadTimelineForComplication
,系统将调用getCurrentTimelineEntryForComplication
(以及获取数组的未来和过去变体,具体取决于您的时间旅行设置) - 这是猜想,因为我还没有测试它,但我相信如果你调用
extendTimelineForComplication
它,只会getTimelineEntriesForComplication(... afterDate date: NSDate ...)
调用它。 - 然后系统将调用
getNextRequestedUpdateDateWithHandler
,以便您可以指定您的并发症需要多长时间才能进行新的更新。
Apple 的文档非常清楚,您不应该过于频繁地要求更新,或者在并发症代码中进行过多的处理,否则您将耗尽您的时间预算,您的并发症将停止更新。所以,我的问题是:您在何时何地进行更新?
对于上下文,我的场景是一个 URL,其返回数据每小时最多更改两次。
放置 URL 获取代码最明显的地方是func requestedUpdateDidBegin()
获取数据,存储它,如果没有变化,就返回。如果有更改,则延长或重新加载时间线。
但是,获取 URL 的成本可能很高。备择方案:
- 将代码放在手机应用程序上并使用 发送
WCSession
,但如果用户关闭该应用程序,则更新将不再发生。 - 使用推送更新,但这不是网络应用程序,所以我没有地方可以发送它们。
- 显然,当用户与手表应用程序交互时,我会更新所有数据,但这意味着它仅在用户使用应用程序时才会更新,这消除了对复杂性的需求。
还有其他地方吗?我可以在手表应用程序中设置不属于复杂功能的周期性功能吗?获取复杂功能更新数据的正确位置在哪里?
ios - WatchOS 2 复杂计划在后台更新
所以,经过这么多的测试和在线研究,我不得不放弃并寻求帮助。WatchOS 2 并发症。
所以我正在尝试创建一个显示更新时间的基本复杂功能。
我知道后台更新是预算的,所以我尝试每 10 分钟更新一次时间。希望收集 NSDate 很简单,这不会导致我“超出预算”。
我现在忽略时间旅行并提供时间表。相反,我只是用当前时间填写大型模块模板:
然后我有这个:
和这个:
不过,更新永远不会发生。只有启动扩展程序并运行与上面 4 行相同的代码,我才能获得更新的复杂性。通过查看日志,强制更新后发生的所有事情都是调用 getNextRequestedUpdateDateWithHandler 方法,但没有别的。
有什么建议或我显然遗漏的任何东西吗?非常感谢您的阅读。