【问题标题】:Duplicate entries of data in the Health app健康应用程序中的重复数据条目
【发布时间】:2020-02-26 12:55:59
【问题描述】:

我们将 Healthkit 集成到我们的健身应用程序中,并请求允许写入有功能量步数步行加跑步距离的数据。。 p>

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

最近,我们正在尝试将我们的健身数据贡献到 Apple Watch 活动环中,为此,我们征得 Workout 许可,我们遵循了开发者苹果文档网站上发布的article。我们实现了相同的,它正在工作,我们可以在活动环中看到我们的健身数据。

现在,我们共有 四个 来自 Healthkit 的权限来写入数据。

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

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

根据我们的观察,如果我们从 Health 应用中撤消 Workout 权限并仅为其余三个权限写入数据,那么它就可以正常工作并在 Health 应用中显示正确的条目。但是,如果我们为请求的所有权限写入数据,则会创建重复条目。

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

现在,我的问题是,

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

任何帮助将不胜感激。

【问题讨论】:

    标签: ios objective-c swift healthkit


    【解决方案1】:

    使用元数据来识别您的记录并让 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
        )
    }
    

    【讨论】:

    • 感谢您的回复,我仍然面临同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2023-01-24
    • 2019-06-05
    相关资源
    最近更新 更多