watchOS - 显示有关并发症的实时出发数据

2023-11-25

我有一个公共交通应用程序,其中包含火车的实时出发数据。 我想添加一个复杂功能,显示下一趟火车的出发时间。

是否可以显示(或刷新)有关并发症的实时数据?例如,显示“到 X 站 3 分钟”。根据来自公共交通 API 的信息,数据每分钟都可能发生变化。

我应该如何在 watchOS 2 或 watchOS 3 上完成此操作?

我知道 ETA 应用程序会显示复杂情况下的行程时间,但我不确定他们是如何实现这一点的。


可以实时更新吗?

  • 并发症并不是为了显示实时数据而设计的。频繁更新会影响能源效率并影响电池(手表和手机)。

    为了最大限度地减少功耗,ClockKit 要求您提供尽可能多的可用数据,然后缓存数据并在需要时呈现它。

  • 虽然复杂功能时间线的重新加载次数没有固定的限制,但复杂功能数据源受每日执行时间预算的限制。

    如果您的应用程序的数据经常更改,则可能很难提供足够的数据来显示复杂功能。更糟糕的是,如果您过于频繁地刷新复杂功能数据,则可能会超出执行时间预算,并且您的复杂功能可能要到第二天才会更新。

  • 一旦每日预算用完,请致电reloadTimeline (and extendTimeline) 没做什么。

    如果您的并发症已经超出了分配的每日执行时间预算,则调用此方法不会执行任何操作。请谨慎调用此方法。

复杂功能如何显示相对时间?

  • 您可以使用CLKRelativeDateTextProvider创建可以每分钟更改的格式化相对时间。

    CLKRelativeDateTextProvider 对象创建一个格式化字符串,用于传达当前日期和您指定的日期之间的时间差。您可以使用相对日期文本提供程序以有效的方式实现计时器或其他相对时间值。不要使用多个时间线条目来复制倒计时器,而是使用相对日期文本提供程序创建单个时间线条目。当用户查看钟面时,ClockKit 会自动更新复杂功能中的相对时间值,提供最新的时间信息。

一个复杂功能怎么会频繁更新呢?

  • 您可以使用复杂功能推送更新(从远程服务器,或在 iOS 10 中从手机本地)。

    每天的复杂功能推送更新上限为 50 次。

  • 您可以在手机上获取数据并使用transferCurrentComplicationUserInfo.

    在 watchOS 2 中,这仅受每日预算的影响。在 watchOS 3 中,现在限制为每天 50 次传输。

    See TransferCurrentComplicationUserInfo是否更适合复杂功能更新?更多细节。

  • 在 watchOS 2 中,你可以使用getNextRequestedUpdateDate安排下次更新您的并发症的时间。

    这种情况发生的频率不会超过每十分钟一次。

    请注意,watchOS 3 应用程序应升级为使用后台刷新应用程序任务。主要好处是后台任务能够做的不仅仅是更新您的并发症。他们还可以处理数据获取、数据到达后更新模型以及更新码头快照。

  • 最后,您可以安排手动更新。在 watchOS 3 中,推荐的方法是通过后台刷新应用程序任务。

    任务预算允许每小时执行 4 个任务。看scheduleBackgroundRefresh更多细节。

    请注意,后台刷新应用任务使用的 CPU 不得超过 10%。

WWDC 2016 会议推荐

  • 208 watchOS 3 的新增功能介绍其中一些主题。

  • 804 设计出色的 Apple Watch 体验讨论何时以及为何更新您的手表应用程序。

  • 218 让您的手表应用程序保持最新状态提供有关使用后台任务更新复杂功能、应用程序和扩展坞快照的详细信息。

正如会谈中提到的,您应该在需要时安排更新。

对于您的用例,示例仅在公共交通运行时以及仅在定期出发时间受到延误影响时进行。

苹果示例代码

苹果提供观看背景刷新示例代码演示如何使用WKRefreshBackgroundTask在后台更新 WatchKit 应用程序。

要更新后台任务中的任何活动并发症,您只需添加代码来重新加载(或延长)时间线:

let complicationServer = CLKComplicationServer.sharedInstance()

for complication in activeComplications {
    complicationServer.reloadTimelineForComplication(complication)
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

watchOS - 显示有关并发症的实时出发数据 的相关文章

  • 在 watchOS 中使用environmentObject

    我正在尝试使用environmentObject在 watchOS6 应用程序中将我的数据模型绑定到我的视图 我在 Xcode 11 中创建了一个简单的独立 Watch 应用程序 我创建了一个新的DataModel class import
  • 仅在 Apple Watch 上请求位置,无需在配对手机上请求位置代码

    我到处都看过 包括苹果的示例应用程序 https developer apple com library content samplecode PotLoc Listings Potloc WatchKit Extension Stream
  • 由于 WatchKit,Xcode 11 Beta 无法构建?

    在 Xcode 10 上工作 现在在测试版中我无法构建我不断收到此错误 为 iOS 模拟器构建时 WatchKit 不可用 考虑使用 if os iOS 有条件地导入此框架 对于 WatchKit 扩展中的一个 swift 文件 我也遇到了
  • 在真实Apple Watch上调试:应用程序验证失败

    今天我尝试在真正的 Apple Watch 上调试我的 WatchKit 应用程序 在 Xcode 中点击 调试 按钮后 iPhone 主应用程序已正确安装 但 Apple Watch 只显示消息安装xxx失败 错误 应用程序验证失败 Wa
  • 如何更改Apple Watch界面控制器标题大小/文本?

    如何更换苹果手表interface controller标题大小 文字 我们可以提供自定义字体吗 尝试使用以编程方式设置标题NSAttributedText但没有成功 有任何想法吗 您可以通过调用以下命令来更改界面控制器的标题 迅速 fun
  • Watchkit 、带有 WatchKit 扩展的 openParentApplication

    第一次不行 Null 在iPhone中打开应用程序之前 有时不起作用 但我想要一个循环或计时器来重复此请求以获取结果 这是我的代码 void application UIApplication application handleWatch
  • Apple Watch 的预处理器宏?

    我正在看苹果的Lister 适用于 Apple Watch iOS 和 OS X https developer apple com library prerelease ios samplecode Lister Listings Obj
  • CoreMotion 陀螺仪苹果手表

    我正在尝试访问苹果手表的陀螺仪 据我所知 它可以在 watchos 3 中使用 不幸的是我无法让它工作 它不断返回 陀螺仪不可用 因此 MotionManager isGyroAvailable 始终为 false 这是我的代码 任何帮助
  • Xcode - 启动 WatchKit 扩展时出错

    我已经成功构建了一个基本的 Watch iPhone 应用程序 但尝试在我的设备上运行时出现以下错误 启动 app name WatchKit 扩展 时出错 操作无法完成 无法启动 因为它的代码签名无效 权限不足或其配置文件尚未得到用户的明
  • 使用 watchOS2 中的 WatchConnectivity 在 iOS 和 WatchOS 之间发送消息

    我看了WWDC2015 看到现在可以在手表上开发原生应用了 这开启了很多功能 我想知道如何在我的 iOS 应用程序和 AppleWatch 应用程序之间发送数据 我看到有一个新的框架叫做WatchConnectivity 我如何使用它以及来
  • 如何在 WKInterfaceTable 中创建部分

    由于没有委托 我们如何在表中创建部分 有没有其他方法来创建部分 或者我们是否必须使用两个表 WKInterfaceTable 不像 UITableView 那样灵活 但您可以使用不同的行类型手动创建行 并根据每个单元格的类型填充内容 看一下
  • 将 Watch 应用程序启动到中间视图

    基本上 我的应用程序以页面格式布局 我希望它启动到三个页面的中间 无法设置上一页的转场 所以我一直在尝试用代码来做到这一点 我将主视图设置为第一个视图 并且我尝试了多种方法来在应用程序启动后立即切换到中间视图 这是我尝试过的两种方法 if
  • 可可豆荚和 Watchkit 扩展

    我尝试为我的应用程序构建一个 WatchKit 扩展 我将 pods 文件更新为如下所示 platform ios 8 0 use frameworks source https github com CocoaPods Specs git
  • 以编程方式隐藏和显示 WKInterfaceGroup

    我正在使用 xCode 6 2 beta 2 并尝试以编程方式隐藏和显示组 但没有显示我可以编写的方法group hidden YES or group hidden NO还有其他方法可以做到同样的事情吗 是的 WKInterfaceGro
  • 使用 Storyboard 检测 WatchKit 上所有四个方向的滑动

    我正在尝试检测 AppleWatch 上所有四个方向的滑动 但我不清楚如何为我插入情节提要中的 WKSwipeGestureRecognizer 的方向分配许多值 我尝试过 swiper direction right left up do
  • Apple Watch 应用程序无法本地化

    我已经为德语 法语 西班牙语和简体中文设置了 interface storyboard 字符串 我下载了 iOS 应用程序并将其加载到手表上 例如 我然后将手表语言设置为德语 但用户界面仍然是英文 以下是 interface storybo
  • WatchKit WatchOS - Apple Watch 上从未显示位置服务提示

    当我打电话时requestWhenInUseAuthorization 从 Watch 应用程序中 位置服务提示永远不会向用户显示 无论是在 Watch 应用程序中 还是在 iPhone 应用程序中 The 支持无需安装iOS应用程序即可运
  • 如何保证主机应用程序和扩展程序使用的共享应用程序容器中的核心数据存储中的唯一条目?

    为了有效地提出我的问题 让我们首先考虑一下我面临的具体场景 常规设置 一个主机 iOS 8 应用程序 与主机应用程序捆绑在一起的一个或多个 iOS 8 扩展 WatchKit Share 等 主机应用程序和所有扩展在共享应用程序组容器中共享
  • Apple Watch 基础本地化显示错误的默认语言

    我有一个应用程序本地化为三种语言 简体中文 法语和捷克语 并以英语作为开发语言 虽然本地化在 iPhone 上完美运行 但 Apple Watch 存在问题 如果用户将 Watch 语言设置为英语 法语 中文 捷克语以外的任何其他语言 则内
  • 在 WatchKit 和主机 App 中使用具有不同标志的同一文件

    我试图在我的 watchkit 扩展和主机应用程序中使用相同的代码 但在主机应用程序中使用一些附加代码 在 watchkit 扩展中使用一些附加代码 为此 我在各自的目标上添加了 WATCH 和 APP swift 标志 问题是 当我在选择

随机推荐