gpt4 book ai didi

ios - 当 WatchKit 应用程序未运行时,从 iOS 应用程序为 WatchKit 应用程序设置一个值

转载 作者:行者123 更新时间:2023-11-29 00:42:57 25 4
gpt4 key购买 nike

我已经知道如何使用 WCSession 的 updateApplicationContext 方法,但它只在我的 WatchKit 应用程序运行时有效。

我需要将货币汇率从 iOS 应用程序传输到 watch ,以更新我的 watch 数据和复杂功能。

我有一个 API 可以获取 USD-CNY 和 USD-EUR 的汇率,并希望与 watch 共享该汇率(类似于 NSUserDefaults 持久化数据的方式),因此它可以显示我的并发症是“1 美元 = 6.3 元人民币”。

那么,我该如何实现呢?

最佳答案

对于 watchOS 2

只有一种 WCSession 方法可以让您在 watch 应用未激活时更新复杂功能数据。

假设您的并发症处于事件状态,并且您尚未超过 the (iOS 10) number of transfers per day , transferCurrentComplicationUserInfo 将在后台唤醒您的 watch 扩展,并立即将用户信息传输到您的扩展。

然后,您的扩展程序可以在 watch 上保留该数据(供 watch 应用程序在激活时使用),更新您的复杂功能。

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
if let ... { // Retrieve exchange rate data from dictionary
// Add code here to update your cache/backing store with exchange rate
// ...

// Now update the complication
let complicationServer = CLKComplicationServer.sharedInstance()
guard let activeComplications = complicationServer.activeComplications else { // watchOS 2.2
return
}

for complication in activeComplications {
complicationServer.reloadTimelineForComplication(complication)
}
}
}

适用于 watchOS 3

watchOS 3 支持后台刷新应用任务。这意味着您的 watch 应用程序现在可以在后台更新自身、其底座快照及其复杂功能。

我已经 covered this information in an existing answer ,但将在这里总结关键要点:

Apple recommends that you use each opportunity you are given regardless of whether your app is in the foreground or background to keep your complication, app, and dock snapshot up to date.

这是一个根本性的变化,从仅在应用未激活时更新复杂功能,到现在更新所有内容——复杂功能、应用和停靠快照——无论您的 watch 应用程序是在前台还是后台。

关于更新经常更改的数据的限制的说明

无论您使用哪种方法,请记住您将是limited您每天或每小时可以执行的更新数量。

正如 Apple 建议的那样,您应该考虑在需要时安排汇率更新。这两场 session 涵盖了何时(以及如何)更新您的 watch 应用:

关于ios - 当 WatchKit 应用程序未运行时,从 iOS 应用程序为 WatchKit 应用程序设置一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39034260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com