gpt4 book ai didi

ios - 健康应用程序中的重复数据条目

转载 作者:行者123 更新时间:2023-12-01 21:59:30 24 4
gpt4 key购买 nike

我们将 Healthkit 集成到我们的健身应用程序中,并请求允许为 写入数据有功 , 步骤 步行加运行距离 .

无论从我们的健身设备收集到什么数据,我们都会对其进行处理并单独写入 Apple Health,它按预期工作。

最近,我们正在尝试将我们的健身数据贡献给 Apple Watch 事件环,为此,我们询问了 锻炼 许可,我们关注 article发布在开发者苹果文档网站上。我们实现了相同的,它正在工作,我们可以在事件环中看到我们的健身数据。

现在,我们总共有 Healthkit 写入数据的权限。

因此,无论何时,我们的健身设备都会向我们的应用程序发送数据,我们的应用程序会对其进行处理,并在 Health 应用程序中写入事件能量、步数、步行加运行距离和锻炼数据(Apple watch Activity ring 的样本)。在创建锻炼样本时,我们在锻炼中添加了额外的信息,例如事件能量、步数和步行加运行距离。

在 Apple Health 应用程序中,当我们检查应用程序写入了哪些数据时,我们发现 复式 .

根据我们的观察,如果我们撤销 锻炼 来自 Health 应用程序的权限并仅为其余三个权限写入数据,然后它就可以正常工作并在 Health 应用程序中显示正确的条目。但是,如果我们为我们请求的所有权限写入数据,则会创建重复的条目。

如果我们只写三个事件能量、步数、步行加上运行距离,或者如果只写一个锻炼但如果我们为所有人写数据,它会显示重复的条目,它工作正常(在 Apple Health 应用程序中显示正确的条目)。

现在,我的问题是,

有什么方法可以防止 Healthkit 应用程序中的重复条目?在健康应用程序中写入数据以及所有权限事件能量、步数、步行以及运行距离和锻炼的更好方法是什么?

任何帮助将不胜感激。

最佳答案

使用元数据来识别您的记录并让 Apple Health de-duplicate .注意元数据字典。 HKMetadataKeySyncIdentifier 是每个数据点的常量字符串。您可以在数据更改时更改 HKMetadataKeySyncVersion 并假设您的数据始终在更改,并使用自纪元以来的秒数来提供不断增加的版本号。

private func createHealthKitSample(date: String, time: String, quantity: Double, unit: HKUnit, type: HKQuantityType) -> HKQuantitySample {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
// TODO Correct times to UTC by combining timezone offset from profile
let start = dateFormatter.date(from: "\(date) \(time)")!
let end = start.addingTimeInterval(60)
let metadata = [
HKMetadataKeySyncIdentifier: "fitbit-connector-\(type.identifier)-\(start)",
HKMetadataKeySyncVersion: Date().timeIntervalSince1970
] as [String : Any]
return HKQuantitySample(
type: type,
quantity: HKQuantity(unit: unit, doubleValue: quantity),
start: start,
end: end,
metadata: metadata
)
}

关于ios - 健康应用程序中的重复数据条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60414481/

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