0
因此,根據Apple的說法,我需要在updateHandler
由數據被添加到HK觸發後調用HKObserverQueryCompletionHandler
。HKObserverQuery後臺傳送在呼叫完成後停止工作處理器
但只要我叫completionHandler,觀察者查詢停止讓背景中的任何更多的更新..
這裏是我的代碼:
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
})
如果我不叫completionHandler ,一切工作正常,但我從來沒有測試很長一段時間..
我已經試過..沒有改變任何東西。問題是,如果我調用completionHandler(),我不會收到任何其他更新。調用completionHandler是否意味着我想停止接收更新? –
您以這種方式觀察哪種樣本類型?您的代碼註冊每小時更新。你是否說過,當有新數據時,你的應用程序每小時沒有啓動一次?你是否期望它立即得到通知? – Allan
數據類型是步驟。我希望在香港增加新的步驟時每小時得到通知,但我沒有。雖然如果我從來不打電話給completionHandler,一切都很完美..我懷疑這是一個錯誤?! –