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
'iOS > Swift' 카테고리의 다른 글
[HealthKit] enableBackgroundDelivery (1) | 2025.07.09 |
---|---|
[Foundation/Class] NotificationCenter (2) | 2025.07.02 |
[문법/키워드] Computed Property / Extension (0) | 2025.05.21 |
[문법/키워드] mutating, Associated Value (연관 값) (0) | 2025.05.20 |
Swift에서 closure 함수 쓸 때 사용되는 @escaping 은 뭘까? (0) | 2025.05.14 |