Ignore manual entries from Apple Health app as Data Source
Asked Answered
C

2

16

Hi I'm writing a Fitness App which gets its Data from Apples Health app.

So far so good.

Problem: in Health app it is possible to make manually data entries which makes it possible to cheat.

Question: how can i exclude or ignore this specific Data Entries.

Just the Data with "Source: Health" so i've still the possibility to read data from a random Fitness tracker.

Cobaltite answered 2/7, 2015 at 12:23 Comment(1)
You could basically use HKQuery to limit the search to certain app, look at this method on HKQuery + (NSPredicate *)predicateForObjectsFromSource:(HKSource *)source;Deborahdeborath
T
23

Samples in HealthKit that were manually entered by the user will have have a YES value for the HKMetadataKeyWasUserEntered metadata key. To create a predicate that matches only samples that were not user-entered, you could do use the following:

[NSPredicate predicateWithFormat:@"metadata.%K != YES", HKMetadataKeyWasUserEntered];

Note that this must be formulated as value != YES because the value for the key could be YES, NO, or nil and nil implies NO.

Taite answered 6/7, 2015 at 20:16 Comment(0)
C
20

Swift 4:

let predicate = NSPredicate(format: "metadata.%K != YES", HKMetadataKeyWasUserEntered)

And if you have two predicates, useCompoundPredicate:

let compoundPredicate = NSCompoundPredicate(type: .and, subpredicates: [predicate1, predicate2])
Caution answered 4/9, 2018 at 1:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.