问题标签 [clockkit]
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.
io - WatchOS TransferCurrentComplicationUserInfo 每小时执行次数有限?
我正在创建一个应用程序,显示离我最近的巴士站的巴士时刻表。但是,如果我在许多公共汽车站之间旅行,似乎该应用程序会停止将数据传输到我的手表扩展程序。
我认为这是一个问题,因为监视应用程序的后台时间有限。更好的解决方案可能是在 CLLocation 管理器启动位置委托功能时检查设备是否正在移动,如果设备没有移动,则更新复杂功能,因为用户已经移动到新的永久位置一段时间。
有没有人知道我的假设是否正确?还是其他人有更好的主意?
ios - WatchKit 并发症:手表并发症集有一个未分配的项目
我正在开发一个带有模块化大脸复杂功能的 watchOS 应用程序。WatchKit 扩展中的 Assets.xcassets 文件包括一个 Complication 文件夹,其中每个图像集用于Circular
、和Extra Large
,但在我的情况下,我有多个可能的模块化类型资产,我将以编程方式从它们中选择(称为和)。我能够将图像集重命名为,然后将另外两个图像集添加到 Complication 文件夹并用图像填充它们:Modular
Utilitarian
Bottlefed
Breastfed
Pump
Modular
Bottlefed
但是这样做最终会在 Xcode 中显示以下警告:
我找不到任何使用多个图像作为资产的文档或示例来向我展示我是否以预期的方式执行此操作。
请注意,我的方法确实有效,只要将多个资产添加到资产目录并以编程方式从中选择。但是 Xcode 中的警告很烦人,让我觉得我这样做的方式不正确。有什么想法吗?
swift - 如何让 ClockKit 生成超过 100 个时间线条目?
我正在尝试创建一个 ClockKit 复杂功能,它提供一个人的下一个班次开始时的数据,但是没有足够的时间线条目被生成或生成的频率不够高,所以有时,在一定时间后数据不准确。
我已经尝试调试并得出结论,只创建了 100 个时间线条目,适用于每个方向 1:40 小时的日期,对于我的应用程序来说还不够。我已经阅读了文档和延长时间线的方法,但发现它每天只能使用一定次数。
我包括print(String(limit) + " After")
在我getTimelineEntries(complication:date:limit:handler)
的查找它产生了多少。
我该怎么做才能让我的并发症从 00:00 延长到 23:59 的时间线?此外,为什么时间线不会在超过未来最接近的条目时自动延长?这似乎违背了苹果对并发症的意图。
我在下面包含了我的 ComplicationController.swift`。
ios - 是否可以使用 WatchKit/ClockKit 为并发症制作动画?
显然 WatchOS 是一个资源受限的环境,很明显,执行的应用程序可以按照他们的内心内容进行动画处理,但是一个活跃的复杂功能(特别是大型模块化中心)是否有可能接收一个可以在几毫秒内显示帧的上下文 -一个移动的图表,甚至只是改变文本?还是苹果没有公开的功能?
swift - 多色复杂文本
我正在.graphicCorner
使用模板创建 ClockKit 复杂功能CLKComplicationTemplateGraphicCornerTextImage
。正如 Tech Talk Developing Complications for Apple Watch Series 4中所述,应该可以组合多个不同颜色的 Text Providers。
不幸的是,我可以让它工作。
这是我的代码ComplicationController.swift
和我的内容ckcomplication.strings
不会显示任何文字。我在这里做错了什么?我感谢任何想法或工作示例。
core-location - 从 Apple Watch 复杂功能获取核心位置数据的最佳方法?
从并发症中找出用户的经纬度的规定方法是什么?
我尝试在复杂控制器内实例化一个位置管理器,并使用 requestLocation 和 startUpdatingLocation 请求位置。两者都没有响应更新。
我正在使用 watchOS 4.0 和 iOS 9.3。
任何帮助是极大的赞赏。
watchkit - Apple Watch 复杂功能无法可靠更新
我有一个 iPhone 应用程序,它将数据从 iPhone 应用程序直接发送到表盘,以显示为一个复杂功能。
我使用WatchConnectivity
框架创建了一个WCSession
将数据从手机发送到手表。
WCSession
我的数据存储在字典中,并使用'stransferCurrentComplicationUserInfo
方法发送到手表。(这种方法每天可以使用 50 次,我知道这一点 - 这不是问题。)
该transferCurrentComplicationUserInfo
方法似乎在我第一次尝试发送数据时起作用。
我的问题是我的 iPhone 应用程序打算在会话中多次调用此函数,并且它只在第一次可靠地工作。
当我发送第二组数据时,第一组仍然存在于并发症中。通常,当我发送第三组时,会出现第二组。有时第二组永久显示,有时在显示第三组之前只出现一秒钟。
这是不一致的,这就是我遇到的问题。
有什么我设置不正确的吗?
代码:
// 更新 //
经过进一步检查,我现在看到这些步骤发生了故障。
这是事件的顺序:
sendComplication
从 iPhone 应用程序调用ExtensionDelegate
在 Watch 应用上初始化,设置WCSession
- 并发症已更新(为时过早 - 这是在
WCSession
接收新数据之前) - 调用委托方法,
WCSession didReceiveUserInfo
解析数据,更新数据源(来不及) - 并发症被告知重新加载,但没有任何反应(可能的预算问题?)
watchkit - 使用 CLKTextProvider.localizableTextProvider(withStringsFileFormatKey:, textProviders:) 组合文本提供程序
有没有使用 localizableTextProvider(withStringsFileFormatKey:, textProviders:) 设置复杂功能的官方示例?我可以在生成 SampleTemplate 时填充文本提供程序,但是每当我尝试使用 getTimelineEntries 生成模板时,由 localizableTextProvider 生成的文本提供程序结果总是空白,没有文本。
示例(仅支持 .utilitarianLarge):
和 sampleTemplate 作为
与 ckcomplication.strings 作为
示例模板将始终显示文本“Hi World”,而 getCurrentTimelineEntry 的结果将始终显示一个空的复杂功能。
有没有人有幸以这种方式编写文本提供程序?
watchkit - 通过使用 URL 请求获取数据来更新 Apple Watch 复杂功能
我遇到了一个并发症,需要通过从服务器获取数据来不时更新。
我正在尝试从 Watch 获取数据。我是通过安排一个WKRefreshBackgroundTask
. 当此任务触发时,我启动一个 URL 会话以从服务器获取一些 JSON 数据。
成功获取数据后,我WKApplicationRefreshBackgroundTask
通过调用其setTaskCompletedWithSnapshot(false)
.
这一切似乎都可以正常工作,但是,我宁愿创建一个WKURLSessionRefreshBackgroundTask
之后WKApplicationRefreshBackgroundTask
在后台下载它并在后台任务中消耗更少的时间。我认为这是不可能的,我没有下载或上传文件。如果我理解正确WKURLSessionRefreshBackgroundTask
,aURLSessionConfiguration.background(withIdentifier:)
只能用于URLSessionUploadTask
s 或URLSessionDownloadTask
s,所以我不得不忘记这个想法。(如果我误解了,请纠正我)。
现在我遇到的最大问题是,当手表被锁定(取下手腕,戴上充电球等)时,URL 请求没有被执行。因此数据没有被更新。我们应该如何处理?当手表被锁定时,活动编辑会变暗,一旦你解锁手表,它就会重新加载。我们可以做些什么来了解手表被锁定/解锁吗?
使用 a 从 Watch 获取数据是正确的方法WKApplicationRefreshBackgroundTask
,还是唤醒手机并让手机使用 请求数据更好WatchConnectivity
?如果是这样:WCSessionDelegate
您将使用哪些功能来实现这一目标?
如果直接从 Watch 获取数据是要走的路:我可以WKApplicationRefreshBackgroundTask
在请求完成之前将其设置为完成,还是应该等到请求完成之后?(即,应该在什么时间点WKApplicationRefreshBackgroundTask.setTaskCompletedWithSnapshot()
调用)。
我阅读了大量文章并观看了多个视频。然而,我仍然很难找到正确的架构来从服务器获取编译数据并让这个工作坚如磐石。
希望有人可以对此事有所启发。