HealthKit оквир је централна компонента Apple екосистема здравља, који агрегира податке са iPhone, Apple Watch и уређаја трећих страна у заштићеном локалном складишту. Према Apple Developer Documentation, 2025, платформа подржава преко 100 типова података — од физичке активности и сна до лабораторијских анализа и показатеља кардиоваскуларног система. Јединствено складиште медицинских информација омогућује беспрекорну синхронизацију између апликација са грануларном контролом приступа за сваки тип података.
Главно
HealthKit је Apple оквир представљен 2014. године заједно са iOS 8, намењен за централизовано управљање подацима о здрављу и физичкој активности корисника. Платформа служи као јединствени репозиторијум у који апликације и уређаји могу да пишу и из којег могу да читају медицинске информације.
За разлику од решења трећих страна, HealthKit је уграђен директно у iOS оперативни систем, што осигурава високу перформансу и безбедност на хардверском нивоу. Апликације немају директан приступ једна другој — све операције иду кроз централни HKHealthStore.
Према Apple WWDC 2024, преко 87% корисника iPhone-а у САД бар једном користило уграђену апликацију Здравље, која се управо заснива на HealthKit-у. Екосистем укључује хиљаде апликација трећих страна — од фитнес трекера до телемедицинских услуга.
Архитектура HealthKit-а је изграђена на принципу вишеслојног складишта са изолованим контејнерима за сваки извор података. На доњем нивоу налази се SQLite база података, шифрована хардверским AES-256. На горњем нивоу налази се HKHealthStore — јединствени интерфејс за интеракцију.
Сваки унос садржи метаподатке: извор HKSource, уређај HKDevice, датум, време и ознаку за синхронизацију из iCloud-а. Систем аутоматски дедупликује дуплиране уносе из једног извора, спречавајући искривљавање статистике.
Подаци се групишу по типовима — HKQuantityType за бројчане показатеље (пулс, кораци, калорије) и HKCategoryType за категоријалне догађаје (сан, симптоми, менструални циклус). Оваква структура омогућује флексибилно постављање упита за било које комбинације параметара путем HKSampleQuery или HKStatisticsQuery.
HealthKit подржава преко 100 стандардизованих типова података, подељених у категорије: физичка активност, исхрана, сан, кардиоваскуларни систем, репродуктивно здравље, лабораторијски показатељи и животни знаци. Сваки тип има мерну јединицу HKUnit и ниво приступа.
Развојач такође може да креира прилагођене корелације путем HKCorrelation — групу повезаних мерења. На пример, унос о оброку може да садржи калорије, протеине, масти и угљене хидрате као један објекат. За секвенцијална мерења, као што је ниво глукозе, користи се HKSeriesSample.
Рад са HealthKit-ом почиње одређивањем HKHealthStore-а — синглтона који се аутоматски креира при увозу оквира. Путем store-а, апликација проверава да ли је платформа доступна на уређају, јер на iPad-у и iPod touch-у подршка може да изостане. Такође је важно напоменути да HealthKit није доступан на Mac Catalyst-у — за macOS је потребна посебна имплементација.
import HealthKit
let healthStore = HKHealthStore()
let stepType = HKQuantityType
.quantityType(forIdentifier: .stepCount)
let heartRateType = HKQuantityType
.quantityType(forIdentifier: .heartRate)
let typesToRead: Set = [stepType, heartRateType]
HealthKit функционише као посредник између извора података и апликација, користећи асинхрони модел публикације-претплате. Апликација извор пише податке путем HKHealthStore-а, а апликације претплатника примају обавештења о новим уносима путем HKObserverQuery-а који се покреће у позадини.
Оквир подржава синхронизацију у позадини путем iCloud-а: ако је корисник пријављен, HealthKit аутоматски проширује податке на све Apple уређаје у реалном времену. Када нема мреже, промене се буферишу локално и синхронизују по поновном успостављању везе без губитка података.
Према Apple-у, кашњење синхронизације између iPhone-а и Apple Watch-а износи мање од 30 секунди за податке о активности. За друге типове — сан, исхрана, лабораторијски показатељи — синхронизација се одвија по распореду са интервалом до 15 минута да би се уштедела батерија.
HKHealthStore — централни синглтон кроз који се извршавају све операције: чување путем saveObject, читање путем execute и брисање путем deleteObject. Свака операција је асинхрона и враћа резултат путем затварања, што захтева правилно управљање грешкама.
Упити се деле на неколико типова: HKSampleQuery за избор уноса по критеријумима, HKStatisticsQuery за агрегиране податке — збир, просек, минимум, максимум — и HKObserverQuery за праћење промена у реалном времену. За периодична ажурирања у позадини користи се HKHeartbeatSeriesQuery.
let type = HKQuantityType
.quantityType(forIdentifier: .stepCount)
let now = Date()
let start = Calendar.current
.date(
byAdding: .day,
value: -7,
to: now
)
let predicate = HKQuery
.predicateForSamples(
withStart: start,
end: now,
options: .strictStartDate
)
let query = HKSampleQuery(
sampleType: type,
predicate: predicate,
limit: 100
) { _, samples, _ in
for sample in samples as [HKQuantitySample] {
print(sample.quantity)
}
}
healthStore.execute(query)
Интеграција HealthKit-а почиње укључивањем capability HealthKit-а у Xcode-у и додавањем entitlement-а у пројекат. Након тога, апликација тражи дозволу за приступ одређеним типовима података путем requestAuthorization. Важно: HealthKit није доступан на симулатору и захтева физички уређај са iOS-ом.
Процес интеграције укључује три фазе: одређивање типова података, захтев ауторизације и извршавање операција читања и писања. Свака фаза је асинхрона и мора да обрађује грешке — корисник може да одбије захтев за приступ било којем типу података у системском дијалогу са прекидачима.
Према Apple истраживањима, апликације са интеграцијом HealthKit-а показују 40% виши ниво ангажованости корисника. Кључни фактор успеха је објашњење зашто су апликацији потребни одређени подаци о здрављу у опису захтева ауторизације.
Захтев ауторизације се извршава једном при првом покретању. Апликација наводи два сета типова — за читање и за писање. Корисник види системски дијалог са прекидачима за сваки тип података и може да одобри приступ селективно, забрањућу непотребне категорије.
let typesToWrite: Set = [
HKQuantityType
.quantityType(
forIdentifier: .dietaryEnergyConsumed
)
]
let typesToRead: Set = [
HKQuantityType
.quantityType(
forIdentifier: .stepCount
)
]
healthStore.requestAuthorization(
toShare: typesToWrite,
read: typesToRead
) { success, error in
if success {
print("Ауторизација је прибављена")
}
}
HealthKit имплементира вишеслојни модел безбедности, који укључује хардверско шифровање, песчаник апликација и грануларне дозволе. Сви подаци о здрављу чувају се шифровани на уређају и не преносе се у iCloud без посебне сагласности корисника, која се тражи једнократно.
Кључна карактеристика — Intent механизам: апликација нема сталан приступ у позадини подацима. Сваки захтев за читање или писање проверава оперативни систем, а корисник може у сваком тренутку да опозове дозволу кроз Поставке — Приватност — Здравље без потребе за поновном инсталацијом апликације.
Apple строго регулише коришћење HealthKit-а у App Store Review Guidelines-у. Апликација не може да преноси HealthKit податке трећим странама без експлицитне сагласности, не може да их користи за рекламу или циљање и не може да их чува дуже него што је потребно за декларисану функционалност.
HealthKit има одређене лимите: максимална величина базе података на уређају — 1 ГБ, лимит броја уноса у једном упиту — 1000, минимални интервал између истих типова података — 1 секунда. Оквир такође ограничава ажурирања у позадини — не више од 60 покретања HKObserverQuery-а дневно.
Ова ограничења су компензована перформансом: читање 1000 уноса траје просечно 50–100 милисекунди, а упис једног уноса мање од 10 милисекунди. За велике количине података препоручује се коришћење HKStatisticsCollectionQuery-а са претходном агрегацијом уместо избора појединачних уноса. HealthKit обрађује упите асинхроно — апликација се не блокира док чека податке од HKHealthStore-а.
Често постављана питања
HealthKit је подржан на свим уређајима са iOS 8 и новијим, укључујући iPhone, iPad и iPod touch. Apple Watch аутоматски преноси податке путем повезаног iPhone-а. Уређаји трећих страна — фитнес наруквице, ваге, монитори притиска — могу да пишу податке путем HealthKit API-а ако имају одговарајућу апликацију.
Да, апликација Здравље омогућује извоз свих података у XML формату путем функције „Извоз података о здрављу”. Развојачи могу програмски да читају било које дозвољене типове путем HKSampleQuery-а и извозе у сопствени формат. Подаци о здрављу не могу бити пренети на сервере трећих страна без експлицитне сагласности корисника.
Корисник може да обрише податке кроз апликацију Здравље или кроз апликацију извор која их је забилежила. Након брисања подаци се не враћају — HealthKit нема корпе. Операција брисања је неопозива, па се препоручује апликацијама да траже потврду пре извршавања deleteObject-а.
HealthKit је намењен за чување и размену података о здрављу корисника, док је ResearchKit оквир за спровођење медицинских истраживања. ResearchKit користи HealthKit као један од извора података, али додаје модуле информисаног пристанка, упитника и активних задатака за прикупљање истраживачких података.
Да, апликације које користе HealthKit морају да испуњавају App Store Review Guidelines, одељак 5.1.1 — Medical and Health Data. Потребан је јасан опис коришћења података у апликацији, политика приватности, забрана рекламног коришћења података и шифровање приликом преношења путем мреже.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође