Donc, selon Apple, je dois appeler le HKObserverQueryCompletionHandler
après que le updateHandler
soit déclenché à partir des données ajoutées à HK.La livraison de l'arrière-plan HKObserverQuery cesse de fonctionner après l'appel de completionHandler
Mais dès que je l'appelle completionHandler, la requête d'observateur cesse de donner plus de mises à jour en arrière-plan ..
Voici mon code:
guard let sampleType = sample as? HKQuantityType else { return nil }
let query = HKObserverQuery(sampleType: sampleType, predicate: nil, updateHandler: { query, completionHandler, error in
completionHandler()
IamExecutingHKStatisticsCollectionQueryHere()
})
healthStore?.execute(query)
healthStore?.enableBackgroundDelivery(for: sampleType, frequency: .hourly, withCompletion: { success, error in
})
Si je ne l'appelle pas la completionHandler , tout fonctionne bien, mais je n'ai jamais testé pendant de longues périodes de temps ..
J'ai déjà essayé cela .. n'a rien changé. Le problème est que si j'appelle le completionHandler(), je ne reçois aucune autre mise à jour. Est-ce que l'appel de completionHandler signifie que je veux arrêter de recevoir des mises à jour? –
Quels types d'échantillons observez-vous de cette façon? Votre code s'inscrire pour les mises à jour horaires. Êtes-vous en train de dire que votre application ne se lance pas une fois par heure lorsqu'il y a de nouvelles données? Attendez-vous qu'il soit notifié immédiatement? – Allan
le type de données est étapes. Je m'attends à être averti toutes les heures quand de nouvelles étapes sont ajoutées à HK mais je ne le suis pas. Bien que si je n'appelle jamais le completionHandler, tout fonctionne parfaitement .. Je suppose que c'est un bug ?! –