问题标签 [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 回答
271 浏览

xcode - 有没有办法在 Apple Watch 的后台每天运行一次代码?

我想在我的 Watch 应用程序中添加一个显示从 Internet 检索到的信息的复杂功能。这些信息每天都在变化。

我需要找到一种方法来检索这些信息,而不必每天打开 Watch 应用程序或 iOS 应用程序。

我知道在 iOS 上确实不允许在后台运行代码,但这似乎是在 Watch 上运行 Complications 的基本必要条件,所以也许在 WatchOS 上允许它?

有人知道怎么做这个吗?

0 投票
1 回答
224 浏览

ios - ClockKit CLKComplicationDataSource 缺少后向事件

我编写了一个支持并发症的测试应用程序

出于某种原因,钟面仅显示 1-2 个向后事件,但我可以在日志中看到当前日期之前的 10-15 个事件。当我为前向事件返回一个空数组时,我所有的后向事件都开始显示在钟面上。

这是我的功能

PS我知道'limit'参数并且它总是大于我的数组的计数

PPS 对不起我的英语:)

0 投票
2 回答
7789 浏览

apple-watch - Apple Watch 的复杂功能数据更新流程是怎样的?

我一直在互联网上关注很多教程来学习如何设置并发症。按预期设置并发症我没有问题。

直到初始时间线条目过期。12 小时后,我不知道如何更新它以保持并发症的存在。我将在下面分享我拥有的所有内容,希望有人可以帮助我填写。

在这里,我为要在复杂功能上显示的数据创建变量。

以下数组是此数据的容器。

这允许在手表锁定时显示复杂功能。

这允许在复杂功能上进行时间旅行。

在这里,我将时间线的开始时间设置为等于现在。

在这里,我将时间线的结束时间设置为从现在开始的 12 小时。

在这里,我创建了并发症的模板。这是为了在用户浏览手表上的所有并发症时看到我的并发症时向他们显示示例数据。

这为并发症创建了第一个时间线条目。启用复杂功能后,将运行此代码并立即相应地填充复杂功能。

这是我为我目前拥有的所有数据创建时间线条目的地方。

这告诉手表何时更新并发症数据。

这是我遇到问题的地方。

如何创建新数据并重新加载时间线?什么是流量?我不是要延长时间线,而是要完全取代它。我完全不知所措。在这一点上,Apple 的文档非常模糊。我知道我需要实现以下方法,但我不知道如何。有人可以帮我填写此代码吗?

更新:

多亏了 El Tea,我才开始工作。我需要将 CLKComplicationServer 的实例添加到 requestedUpdateDidBegin 并将 reloadTimeline 方法放入其中。

这是更新的代码:

0 投票
2 回答
1805 浏览

apple-watch - 使用 IOS 数据更新 WatchOS2 ClockKit 复杂功能

我正在尝试使用通过 WatchConnectivity 从 IOS / iPhone 传输的数据来更新 watchOS2 时钟套件复杂功能。

尽管进行了相当多的研究,但到目前为止还没有成功。我发现虽然其他帖子描述了类似的挑战(还没有解决方案)

我面临3个问题:

1)来自 ComplicationController 的 sendMessage 似乎没有唤醒 IOS 父应用程序(而从 InterfaceController 发送的相同 sendMessage 确实唤醒了 IOS 父应用程序)

2)即使将值传输到 ComplicationController(通过 sendUserInfoToComplication 并且当 IOS 应用程序处于前台时),显示在复杂功能中的值有时也会更新(尚未找到为什么有时会/有时不会的模式)

3)我将“getNextRequestUpdate..”设置为 2 分钟(用于测试目的)。不过,这似乎没有任何区别。(即使在模拟器中也可以在任意时间触发,但没有使用“预算”/我设置了停止器来验证)

请注意,我对 IOS / Swift 编程比较陌生。但我看到,基于其他问题/帖子,我似乎并不是唯一一个为此苦苦挣扎的人。

这里是示例代码:

并发症控制器

视图控制器

此外,在运行模拟器时,我会收到大量与以下类似的消息:

0 投票
1 回答
451 浏览

watchkit - 处理手表并发症时 Xcode 中的错误消息

执行时

在 中ComplicationController,我收到了许多类似的错误消息,到目前为止我还没有找到解决方法:

这是ComplicationController供参考的代码:

0 投票
2 回答
720 浏览

watchkit - WatchKit:检测应用程序是否从一瞥/并发症启动

有没有办法检测用户点击应用程序概览或复杂性是否启动了 Apple Watch 应用程序?

0 投票
1 回答
836 浏览

ios - 在不运行时让我的 WatchKit 并发症保持最新

我正在开发我的应用程序的 WatchKit 扩展,并且遇到了一些复杂问题。

我有一个显示给定总量的复杂功能,这取决于用户在 iOS 应用程序上所做的事情。当 WatchKit 扩展运行时,iOS 应用程序使用该-[WCSession updateApplicationContext:]方法更新手表应用程序上下文。它工作正常,然后在我的 Watch 应用程序的 ExtensionDelegate 中,我使用新数据手动更新复杂功能。

但这只有在扩展程序运行时才可以(如果不是,它将在下一次启动之前获取应用程序上下文)。

所以我编辑了我的代码,当用户在 iOS 应用程序中更改某些内容时,使用该方法将复杂数据直接发送到 Watch -[WCSession transferCurrentComplicationUserInfo:](它写在文档中,应该唤醒 ExtensionDelegate 以在后台接收用户信息)。

我已经实现了-session:didReceiveUserInfo:ExtensionDelegate 的方法,以在它从 iOS 应用程序接收数据时更新并发症,但是当扩展程序未运行时它不起作用......(我不知道它是否曾经接收到用户信息,因为我无法记录)

即使扩展程序没有运行,我应该如何使我的并发症保持最新?

谢谢

PS:我正在使用手表模拟器,为了“关闭”我刚刚重启手表的扩展(从硬件菜单)

编辑:当应用程序未运行时,我设法注销语句(通过打开 Watch Simulator 系统日志),当 iOS 向手表扩展发送新的复杂用户数据时,我得到这些行:

10 月 18 日 18:08:11 pc16 WatchApp Extension[26615]:扩展收到唤醒复杂功能支持的请求。

10 月 18 日 18:08:11 pc16 断言 [26585]:断言失败:15A284 13S343:断言 + 15398 [B48FCDB-A071-3A46-878B-538DC0AFF60B]:0x1

所以手表很好地接收了用户信息字典,但似乎无法唤醒扩展......

编辑 2:这是 ExtensionDelegate 中应该接收复杂用户信息的代码部分(但在应用程序未运行时不会调用):

编辑 3:WCSession 在扩展委托applicationDidFinishLaunching方法中设置:

0 投票
1 回答
497 浏览

apple-watch - 有没有办法直接从 iPhone 应用程序更新复杂功能?

如果可能的话,我想让用户能够完全绕过手表应用程序。

我尝试在 ViewController 上导入 ClockKit 来创建CLKComplicationServer. 我收到“没有这样的模块”错误。

有没有办法直接与 iOS 应用程序的并发症进行交流?

0 投票
2 回答
1881 浏览

watchkit - transferCurrentComplicationUserInfo 更适合并发症更新吗?

transferCurrentComplicationUserInfo和 和有什么不一样transferUserInfo

我想将数据从我的 AppDelegate 发送到时钟套件复杂功能。

transferCurrentComplicationUserInfo似乎与transferCurrentUserInfo. 我错过了什么吗?

0 投票
1 回答
199 浏览

swift - 如何在 CLKComplicationDataSource 中定义两个并发症的数据

所以,我对 ClockKit Complications 有点陌生,我想知道如何为两个 Complications 制作占位符模板。

我的代码:

有谁能帮忙吗?