اخذ مجوز دادههای سلامت فرآیند دریافت رضایت صریح کاربر برای خواندن و نوشتن دادههای پزشکی و تناسب اندام از طریق APIهای سیستمی پلتفرمهای موبایل است. در iOS، مجوزدهی از طریق HealthKit با کلاسهای HKHealthStore و HKObjectType و در اندروید از طریق Google Fit API با OAuth 2.0 و FitnessOptions پیادهسازی میشود. به گفته Apple HealthKit Documentation, 2025، دادههای سلامت به عنوان دستهای از اطلاعات فوقمحرم طبقهبندی میشوند. دقت پزشکی و انطباق با مقررات الزامات کلیدی هنگام کار با چنین دادههایی هستند.
نکات اصلی
اخذ مجوز دادههای سلامت مکانیزمی است که قبل از دسترسی به دادههای پزشکی و تناسب اندام کاربر، رضایت صریح و مستند او را الزامی میکند. برخلاف مجوزهای استاندارد (مخاطبین، تقویم)، دادههای سلامت مشمول مقررات قانونی اضافی هستند: HIPAA در ایالات متحده، GDPR در اروپا و 152-FZ در روسیه.
در iOS، مجوزدهی سلامت از طریق HealthKit پیادهسازی میشود: کاربر صفحهای با فهرست تمام انواع دادههایی که برنامه درخواست میکند میبیند و میتواند دستههای خاصی را برای ارائه دسترسی انتخاب کند. در اندروید از Google Fit API با مجوزدهی از طریق OAuth 2.0 استفاده میشود، جایی که برای هر نوع داده یک دامنه جداگانه درخواست میشود.
بر اساس دادههای App Annie (2025)، برنامههای سلامت و تناسب اندام یکی از سریعترین بخشهای در حال رشد بازار موبایل با رشد سالانه 28% هستند. در عین حال، 71% کاربران در صورتی که برنامه توضیح واضحی از هدف جمعآوری ارائه ندهد، از دسترسی به دادههای سلامت خودداری میکنند.
تفاوت کلیدی مجوزدهی سلامت با سایر مجوزها — امکان ارائه دسترسی جزئی است. کاربر میتواند اجازه خواندن گامها را بدهد اما دسترسی به دادههای ضربان قلب یا سوابق پزشکی را ممنوع کند.
HealthKit فریمورکی از اپل است که در iOS 8 معرفی شد و یک مخزن متمرکز واحد برای دادههای سلامت فراهم میکند. برنامهها دسترسی مستقیم به HealthKit ندارند — آنها از طریق HKHealthStore مجوز درخواست میکنند و کاربر تصمیم میگیرد که چه نوع دادههایی را ارائه دهد. تمام دادهها روی دستگاه رمزگذاری میشوند و از طریق iCloud با رمزگذاری سرتاسری همگامسازی میشوند.
فرآیند مجوزدهی با ایجاد نمونه HKHealthStore و فراخوانی متد requestAuthorization(toShare:read:) آغاز میشود. برنامه دو مجموعه نوع داده ارسال میکند: برای خواندن (HKObjectTypeهایی که برنامه میخواهد بخواند) و برای نوشتن (HKSampleTypeهایی که برنامه میخواهد ذخیره کند). سیستم صفحه رضایت را نمایش میدهد که در آن کاربر هر نوع را به صورت جداگانه فعال یا غیرفعال میکند.
ویژگی مهم: HealthKit به توسعهدهنده نشان نمیدهد که کاربر دقیقاً چه نوعهایی را در صفحه رضایت مجاز کرده است. پس از فراخوانی requestAuthorization، باید دسترسی به هر نوع را به صورت جداگانه از طریق HKHealthStore.authorizationStatus(for:) بررسی کرد. به گفته WWDC Session 11108 (2024)، اپل توصیه میکند قبل از هر عملیات خواندن یا نوشتن، وضعیت مجوزدهی را بررسی کنید.
HealthKit از صدها نوع داده پشتیبانی میکند که به دستههایی تقسیم میشوند: کمی (گامها، نبض، کالری)، ویژگیها (قد، وزن، تاریخ تولد)، سوابق بالینی (آلرژی، واکسیناسیون، نتایج آزمایش)، علائم و چرخه قاعدگی. هر نوع توسط زیرکلاسی از HKObjectType نمایش داده میشود: HKQuantityType برای شاخصهای عددی و HKCategoryType برای دادههای دستهبندی.
از iOS 18، اپل HealthKit را با پشتیبانی از دادههای مؤسسات پزشکی از طریق FHIR (Fast Healthcare Interoperability Resources) گسترش داد. برنامهها میتوانند درخواست دسترسی به سوابق پزشکی ساختاریافته را داشته باشند اگر کاربر بیمارستان یا کلینیک خود را به برنامه Health متصل کرده باشد.
Google Fit پلتفرمی برای کار با دادههای تناسب اندام در اندروید است که از مجوزدهی از طریق OAuth 2.0 استفاده میکند. برخلاف HealthKit، Google Fit در سطح سیستم در سیستم عامل تعبیه نشده است — این یک سرویس جداگانه Google Play Services است که نیاز به اتصال از طریق Google Play Console و ایجاد اعتبارنامه OAuth 2.0 دارد.
برای دسترسی به Google Fit، برنامه باید یک شناسه مشتری OAuth 2.0 را در Google Cloud Console ثبت کند. مجوز از طریق GoogleSignInAccount و GoogleSignIn.requestPermissions() درخواست میشود. کاربر صفحه رضایت استاندارد گوگل را با فهرست دامنههای درخواستی میبیند: fitness.activity.read، fitness.body.read، fitness.nutrition.write و موارد دیگر.
Google Fit مجوزها را برای خواندن و نوشتن برای هر نوع داده جدا میکند. برنامه میتواند بدون درخواست مجوز نوشتن، فقط دسترسی خواندن تعداد گامها را درخواست کند. از Google Fit API v2، تمام درخواستهای مجوزدهی باید شامل شرح هدف استفاده از داده باشند — بدون این، درخواست توسط نظارت گوگل رد میشود.
کلاس FitnessOptions امکان تعیین اعلامی این که به چه نوع دادههایی دسترسی نیاز است را فراهم میکند. برای هر نوع میتوان سطح دسترسی را تنظیم کرد: ACCESS_READ، ACCESS_WRITE یا هر دو. مجموعه مجوزها همراه با حساب کاربری به GoogleSignin.requestPermissions() ارسال میشود.
فهرست انواع موجود شامل: گامها (DataType.TYPE_STEP_COUNT_DELTA)، کالری (TYPE_CALORIES_EXPENDED)، نبض (TYPE_HEART_RATE_BPM)، مسافت (TYPE_DISTANCE_DELTA)، فعالیت (TYPE_ACTIVITY_SEGMENT) و خواب (TYPE_SLEEP_SEGMENT) است. هر نوع فرکانس بهروزرسانی و الزامات مجوز خاص خود را دارد.
پیادهسازی درخواست مجوزدهی دادههای سلامت در iOS و اندروید تفاوت قابل توجهی دارد. در زیر نمونههای عملی برای HealthKit و Google Fit API آورده شده است.
در Swift، درخواست مجوز HealthKit از طریق HKHealthStore با تعیین انواع داده برای خواندن و نوشتن انجام میشود. نمونه درخواست دسترسی به دادههای گامها و نبض را نشان میدهد.
import HealthKit
let healthStore = HKHealthStore()
let readTypes: Set<HKObjectType> = [
HKObjectType.quantityType(forIdentifier: .stepCount)!,
HKObjectType.quantityType(forIdentifier: .heartRate)!
]
let writeTypes: Set<HKSampleType> = [
HKObjectType.quantityType(forIdentifier: .stepCount)!
]
guard HKHealthStore.isHealthDataAvailable() else {
fatalError("HealthKit در این دستگاه در دسترس نیست")
}
healthStore.requestAuthorization(toShare: writeTypes, read: readTypes) { success, error in
if success {
// وضعیت هر نوع را جداگانه بررسی میکنیم
let status = healthStore.authorizationStatus(for: readTypes.first!)
print("مجوزدهی HealthKit: \(status.rawValue)")
} else {
print("خطای مجوزدهی HealthKit: \(error?.localizedDescription ?? "ناشناخته")")
}
}
در اندروید، مجوزدهی Google Fit از طریق GoogleSignIn و FitnessOptions انجام میشود. نمونه درخواست دسترسی به دادههای گامها و کالری را نشان میدهد.
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_CALORIES_EXPENDED, FitnessOptions.ACCESS_READ)
.build()
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this,
REQUEST_GOOGLE_FIT,
account,
fitnessOptions
)
} else {
// مجوزها قبلاً اعطا شدهاند — دادهها را میخوانیم
readGoogleFitData(account)
}
// پردازش نتیجه درخواست مجوزها
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_GOOGLE_FIT && resultCode == RESULT_OK) {
val account = GoogleSignIn.getSignedInAccountFromIntent(data)
account?.let { readGoogleFitData(it) }
}
}
دادههای سلامت به دستهای از اطلاعات شخصی به ویژه حساس تعلق دارند. توسعهدهندگان برنامههایی که با HealthKit یا Google Fit کار میکنند موظف به رعایت الزامات قانونی قابل اجرا در منطقه کاربران هستند.
در ایالات متحده، دادههای سلامت توسط قانون HIPAA (Health Insurance Portability and Accountability Act) تنظیم میشود که الزامات سختگیرانهای برای ذخیرهسازی، انتقال و پردازش اطلاعات پزشکی تعیین میکند. برنامههای کار با HealthKit میتوانند با HIPAA مطابقت داشته باشند اگر دادهها به صورت رمزگذاری شده به سرور ارسال شوند و دسترسی به آنها محدود شده باشد.
در اتحادیه اروپا، دادههای سلامت بر اساس GDPR (ماده 9) به عنوان دسته خاصی از دادههای شخصی در نظر گرفته میشوند. پردازش چنین دادههایی نیاز به رضایت صریح کاربر و در اکثر موارد، ارزیابی تأثیر حفاظت از دادهها دارد. نقض الزامات GDPR میتواند منجر به جریمه تا 20 میلیون یورو یا 4% از گردش مالی سالانه شرکت شود.
در روسیه، جمعآوری دادههای سلامت توسط 152-FZ «درباره دادههای شخصی» تنظیم میشود. از سال 2025، تمام برنامههایی که دادههای پزشکی شهروندان فدراسیون روسیه را پردازش میکنند، موظف به استفاده از ابزارهای رمزگذاری تأیید شده و ذخیره دادهها در سرورهای واقع در قلمرو فدراسیون روسیه، مطابق با الزامات Roskomnadzor هستند.
توصیه: قبل از انتشار برنامهای که با دادههای سلامت کار میکند، برای بررسی انطباق با مقررات محلی با بخش حقوقی مشورت کنید. اپل و گوگل این حق را برای خود محفوظ میدارند که در صورت عدم تطابق سیاست حفظ حریم خصوصی با الزامات، برنامه را رد کنند.
سوالات متداول
HealthKit — فریمورک داخلی iOS با مخزن رمزگذاری شده محلی دادههای سلامت. Google Fit — سرویس ابری مبتنی بر Google Play Services که از OAuth 2.0 برای مجوزدهی استفاده میکند. HealthKit به صورت آفلاین کار میکند، Google Fit برای همگامسازی نیاز به اتصال اینترنت دارد.
بله، در هر دو پلتفرم. در iOS، کاربر انواع خاصی از دادهها (گامها، نبض، خواب) را در صفحه رضایت HealthKit انتخاب میکند. در اندروید، کاربر فهرست دامنههای Google Fit را میبیند و میتواند مجوزهای جداگانه را از طریق تنظیمات حساب گوگل لغو کند.
HKHealthStore — کلاس مرکزی فریمورک HealthKit در iOS است. این کلاس مجوزدهی، خواندن و نوشتن تمام دادههای سلامت را مدیریت میکند. برنامه نمیتواند مستقیماً به مخزن HealthKit دسترسی پیدا کند — تمام عملیات از طریق HKHealthStore انجام میشود که یک رابط دسترسی یکپارچه و رعایت حقوق دسترسی کاربر را تضمین میکند.
کاربر میتواند دسترسی را از طریق تنظیمات گوگل — مدیریت حساب — امنیت — برنامههای شخص ثالث با دسترسی لغو کند. برنامه را انتخاب کرده و «حذف دسترسی» را کلیک کنید. همچنین میتوانید دسترسی را از طریق Google Play Console لغو کنید: سرویسهای مرتبط — Google Fit — مدیریت برنامهها.
اگر برنامه دادههای سلامت کاربران در ایالات متحده را پردازش کرده و به سرور ارسال میکند، مطابقت با HIPAA اجباری است. اگر تمام دادهها به صورت محلی روی دستگاه باقی بمانند و به اشخاص ثالث منتقل نشوند، برنامه ممکن است نیازی به مطابقت با HIPAA نداشته باشد، اما اپل صرف نظر از حوزه قضایی، پیروی از بهترین شیوههای امنیتی را توصیه میکند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید