问题标签 [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.

0 投票
2 回答
2803 浏览

ios - 如何为我现有的 Xcode 项目添加复杂性?

如何为我现有的Xcode 7 项目添加复杂性?

查看 WWDC 视频 2015 会议 209 显示添加复杂性的方法是创建一个新项目并单击Include Complication。这适用于这种情况,但我如何将它们添加到现有项目中?

在此处输入图像描述

我在 XCode 对象选择器中找不到复杂控制器(见下文):

在此处输入图像描述

为什么会这样??

0 投票
2 回答
3205 浏览

apple-watch - 使数据复杂化:未调用 ExtensionDelegate

(看起来其他人在前几周遇到过这个问题,但我没有找到任何解决方案。)

我正在尝试做一件非常基本的事情:从我的 iOS 应用程序或我的 Watch 应用程序获取数据到我的复杂控制器。

事实证明,我做这件事的能力比我想象的要差。watchOS 2 过渡指南表明我应该使用以下代码“从扩展委托中获取所需的数据”:

伟大的。除了,我无法弄清楚如何让它在扩展方面工作。尽管更重要的是,我似乎根本无法从复杂控制器启动中运行扩展委托代码。当我运行复杂功能时,我收到以下消息:“扩展收到唤醒复杂功能支持的请求。” 但是,任何扩展委托的方法中的代码似乎都没有运行。我还在每个方法中设置了断点,并且没有一个断点被命中。

看起来“transferCurrentComplicationUserInfo:”也被建议用于复杂功能更新,尽管目前还不清楚它是如何使用的。据我所知,它用于唤醒手表扩展,以便 ExtensionDelegate 可以存储新数据以供下次复杂控制器运行时使用,但由于上一个问题,我无法确认。

我有一个可能的解决方法(从复杂控制器 ping 服务器并希望会话变量持续存在,以便我可以发送相关数据),但是如果我不能解决这个问题,我的复杂工作很有可能会被淹没。这里的任何帮助都是巨大的。

顺便说一句,这是我为“getCurrentTimelineEntryForComplication”提供的代码,如果这有帮助的话。

0 投票
0 回答
108 浏览

objective-c - ios中的openParentApplication调用没有打开我的父应用程序

我需要知道如何打开我的 iphone 的父应用程序。我有一块1.0.1 版本的手表,父应用程序有8.4 iOS

这是我在AppDelegate

这就是我回复信息的方式:

但是我的父应用程序没有打开。

我的错误是什么!请帮忙

0 投票
1 回答
86 浏览

ios - watchkitapp 未能及时更新场景

Watchkit 扩展中有一个方法可以在 tableview 中显示项目。大约有 500 多个项目,内存从 2.9mb 增加到 7.8mb,手表应用程序崩溃。方法如下:

在设备日志中,我可以看到这条消息“watchkitapp 未能及时更新场景”

如何修复此崩溃?是内存造成的还是手表tableview加载500项的等待时间过长?

0 投票
0 回答
253 浏览

apple-watch - Control Apple Watch's Brightness programmatically

Is there any way to control Apple Watch's Brightness programmatically?

0 投票
1 回答
547 浏览

watchkit - 在 watchOS 2 下处理复杂功能

我有一个包含不同类型条目的时间线,我需要一种方法来将用户导航到特定的界面控制器(或相同的控制器但具有不同的上下文),具体取决于已点击的条目类型。有什么方法可以处理 watchOS 2 下的并发症?

0 投票
1 回答
729 浏览

swift - WatchKit 2 并发症文本仅在预览中显示

我正在尝试为 2 开发一个非常简单的复杂功能,它从一个简单的文本提供程序中说“嗨”。

我设法实现了一些奇怪的行为;单击复杂功能或从自定义表盘屏幕预览时,我可以看到文本,但在显示表盘时看不到。看一看:

表盘表现异常 gif

有什么想法可能导致这种情况吗?

我的文本提供程序看起来像这样

我的得到getPlaceholderTemplateForComplication看起来像

0 投票
1 回答
1706 浏览

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

我正在尝试为 watchOS 2 GM 编写一个复杂功能,显示它使用 WCSession 从我的 iPhone(iOS 9 GM)获得的值。

不幸的是,我在发送消息时收到以下错误:

这就是我的代码在 ComplicationController.swift 中的样子:

这是我的 ExtensionDelegate.swift:

最后是我的 iOS AppDelegate:

有任何想法吗?

提前致谢!

0 投票
2 回答
8151 浏览

ios - 何时何地获取手表复杂功能的数据

在处理了几天的并发症后,我有信心对按规定时间间隔发生的更新的更新过程说以下内容:

  • 系统调用requestedUpdateDidBegin()
    • 您可以在此处确定您的数据是否已更改。如果没有,您的应用程序无需执行任何操作。如果您的数据已更改,您需要致电:
      • reloadTimelineForComplication如果您的所有数据都需要重置。
      • extendTimelineForComplication如果您只需要在并发症时间线的末尾添加新项目。
    • 注意:系统实际上可能会调用requestedUpdateBudgetExhausted(),而不是requestedUpdateDidBegin()如果您在当天花费了过多的并发症时间预算。这就是这个问题的原因。
  • 如果您调用reloadTimelineForComplication,系统将调用getCurrentTimelineEntryForComplication(以及获取数组的未来和过去变体,具体取决于您的时间旅行设置)
  • 这是猜想,因为我还没有测试它,但我相信如果你调用extendTimelineForComplication它,只会getTimelineEntriesForComplication(... afterDate date: NSDate ...)调用它。
  • 然后系统将调用getNextRequestedUpdateDateWithHandler,以便您可以指定您的并发症需要多长时间才能进行新的更新。

Apple 的文档非常清楚,您不应该过于频繁地要求更新,或者在并发症代码中进行过多的处理,否则您将耗尽您的时间预算,您的并发症将停止更新。所以,我的问题是:您在何时何地进行更新?

对于上下文,我的场景是一个 URL,其返回数据每小时最多更改两次。

放置 URL 获取代码最明显的地方是func requestedUpdateDidBegin()获取数据,存储它,如果没有变化,就返回。如果有更改,则延长或重新加载时间线。

但是,获取 URL 的成本可能很高。备择方案:

  • 将代码放在手机应用程序上并使用 发送WCSession,但如果用户关闭该应用程序,则更新将不再发生。
  • 使用推送更新,但这不是网络应用程序,所以我没有地方可以发送它们。
  • 显然,当用户与手表应用程序交互时,我会更新所有数据,但这意味着它仅在用户使用应用程序时才会更新,这消除了对复杂性的需求。

还有其他地方吗?我可以在手表应用程序中设置不属于复杂功能的周期性功能吗?获取复杂功能更新数据的正确位置在哪里?

0 投票
1 回答
1048 浏览

ios - WatchOS 2 复杂计划在后台更新

所以,经过这么多的测试和在线研究,我不得不放弃并寻求帮助。WatchOS 2 并发症。

所以我正在尝试创建一个显示更新时间的基本复杂功能。

我知道后台更新是预算的,所以我尝试每 10 分钟更新一次时间。希望收集 NSDate 很简单,这不会导致我“超出预算”。

我现在忽略时间旅行并提供时间表。相反,我只是用当前时间填写大型模块模板:

然后我有这个:

和这个:

不过,更新永远不会发生。只有启动扩展程序并运行与上面 4 行相同的代码,我才能获得更新的复杂性。通过查看日志,强制更新后发生的所有事情都是调用 getNextRequestedUpdateDateWithHandler 方法,但没有别的。

有什么建议或我显然遗漏的任何东西吗?非常感谢您的阅读。