iOS/Swift

[HealthKit] HKObserverQueryCompletionHandler

태애니 2025. 7. 11. 10:13
728x90

https://delightpip.tistory.com/390

 

[HealthKit] enableBackgroundDelivery

HealthKit Capabilities Entitlementcom.apple.developer.healthkit.access 앱이 포그라운드/백그라운드 상태로 실행되면, HealthKit은 해당하는 HKObserverQuery의 핸들러를 즉시 실행시킨다. 백그라운드에서도 작동하려면

delightpip.tistory.com

 

 

 

 

백그라운드 전달에 사용되는 completion handle 

 

typealias HKObserverQueryCompletionHandler = () -> Void

 

 

이 completion handler는 백그라운드 전달에 응답할 때 호출해야 하는 클로저를 정의한다.
앱이 백그라운드 전달을 등록한 경우, HealthKit은 새로운 데이터가 저장되었을 때 앱을 깨운다(wake).

  • 앱은 백그라운드에서 깨어난 후, HKObserverQuery에 등록된 update handler가 호출됨.
  • 이 때, update handler는 HKObserverQueryCompletionHandler라는 블록(클로저)을 함께 전달.
  • 👉 이 클로저는 데이터를 처리한 후에 반드시 호출!!!

 

항목 설명
정의 HKObserverQueryCompletionHandler = () -> Void
사용 시점 HKObserverQuery의 update handler 내부에서
해야 할 일 데이터를 모두 처리한 후 반드시 completionHandler() 호출
   
호출 안 하면 HealthKit이 점점 재시도 간격 증가 → 3회 실패 시 업데이트 중단
백그라운드 처리 유지 조건 매번 completionHandler를 정확히 호출해야 함

 

728x90