WidgetKit - API 调用
WidgetKit - API Calls
我正在尝试创建一个可以显示我的汽车信息的小部件。我目前正在为我的主要应用程序使用 API,但也想将其包含在我的小部件中,但还没有找到执行此操作的方法。
如何从 API 获取值,并在小部件中显示该值?这在 WidgetKit
中甚至可能吗?我应该在 getTimeline
函数中包含 API 调用吗?
编辑:这是我用于 API 调用的代码:
let apii = TeslaSwift()
if let jsonString = UserDefaults.standard.object(forKey: "tesla.token") as? String,
let token: AuthToken = jsonString.decodeJSON(),
let _ = UserDefaults.standard.object(forKey: "tesla.token") as? String {
apii.reuse(token: token, email: nil)
}
apii.useMockServer = false
apii.debuggingEnabled = true
let id = UserDefaults(suiteName: "xxxx")!.string(forKey: "GlobalSelectedID")
apii.getVehicle(id!).done {
(vehicle: Vehicle) -> Void in
apii.getAllData(vehicle).done { (extendedVehicle: VehicleExtended) in
carState = (extendedVehicle.state!)
batteryLevel = (extendedVehicle.chargeState?.batteryLevel)!
interiorTemperature = (extendedVehicle.climateState?.insideTemperature!.celsius)!
let formatter = DateFormatter()
formatter.dateFormat = "dd.MM.yyyy - HH:mm:ss"
let now = Date()
let dateString = formatter.string(from:now)
lastUpdated = dateString
}.catch { (error) in
print("error1: \(error)")
}
}.catch { error in
print("error2: \(error)")
}
您可以通过两种方式在 API 的小部件中显示值。
将主应用程序的数据保存在 userdefaults 中,然后在 getTimeLine 函数中从 userdefaults 中检索此数据。您需要使用应用程序组来共享用户默认值。在 userdefaults 中保存数据后,您可以轻松地从主应用程序重新加载小部件。
API 来自 getTimeLine 的调用
我正在尝试创建一个可以显示我的汽车信息的小部件。我目前正在为我的主要应用程序使用 API,但也想将其包含在我的小部件中,但还没有找到执行此操作的方法。
如何从 API 获取值,并在小部件中显示该值?这在 WidgetKit
中甚至可能吗?我应该在 getTimeline
函数中包含 API 调用吗?
编辑:这是我用于 API 调用的代码:
let apii = TeslaSwift()
if let jsonString = UserDefaults.standard.object(forKey: "tesla.token") as? String,
let token: AuthToken = jsonString.decodeJSON(),
let _ = UserDefaults.standard.object(forKey: "tesla.token") as? String {
apii.reuse(token: token, email: nil)
}
apii.useMockServer = false
apii.debuggingEnabled = true
let id = UserDefaults(suiteName: "xxxx")!.string(forKey: "GlobalSelectedID")
apii.getVehicle(id!).done {
(vehicle: Vehicle) -> Void in
apii.getAllData(vehicle).done { (extendedVehicle: VehicleExtended) in
carState = (extendedVehicle.state!)
batteryLevel = (extendedVehicle.chargeState?.batteryLevel)!
interiorTemperature = (extendedVehicle.climateState?.insideTemperature!.celsius)!
let formatter = DateFormatter()
formatter.dateFormat = "dd.MM.yyyy - HH:mm:ss"
let now = Date()
let dateString = formatter.string(from:now)
lastUpdated = dateString
}.catch { (error) in
print("error1: \(error)")
}
}.catch { error in
print("error2: \(error)")
}
您可以通过两种方式在 API 的小部件中显示值。
将主应用程序的数据保存在 userdefaults 中,然后在 getTimeLine 函数中从 userdefaults 中检索此数据。您需要使用应用程序组来共享用户默认值。在 userdefaults 中保存数据后,您可以轻松地从主应用程序重新加载小部件。
API 来自 getTimeLine 的调用