فریمورک 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 از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید