Apple के HealthKit API का परिचय

एक युग में जहां व्यक्तिगत स्वास्थ्य डेटा कार्रवाई योग्य अंतर्दृष्टि को चलाता है, आईओएस हेल्थ किट एपीआई डेवलपर्स के लिए फिटनेस और कल्याण अनुप्रयोगों का निर्माण करने के लिए एक कोने का पत्थर बन गया है। इस ढांचे को आईओएस 8 के साथ एप्पल द्वारा पेश किया गया, स्वास्थ्य और गतिविधि की जानकारी के लिए एक एकीकृत, सुरक्षित भंडार प्रदान करता है। हेल्थ किट को एकीकृत करके, आपका ऐप हेल्थ ऐप डेटा स्टोर से पढ़ और लिख सकता है, जिससे उपयोगकर्ताओं को उनके चरणों, हृदय गति, नींद विश्लेषण, आहार लॉग और यहां तक कि नैदानिक रिकॉर्डों का समेकित दृष्टिकोण देखने की अनुमति मिलती है। यह लेख पता चलता है कि कैसे स्वास्थ्य के लिए एपीआई को प्रभावी ढंग से फिटनेस डेटा को ट्रैक और प्रदर्शित करने के लिए, अनुमति कार्यप्रवाह, क्वेरी रणनीतियों, डेटा दृश्यकरण और सर्वोत्तम उत्पादन प्रथाओं को कवर करता है।

HealthKit की वास्तुकला को समझना

HealthKit दो प्राथमिक अवधारणाओं के आसपास डेटा का आयोजन करता है: डेटा प्रकार और डेटा ऑब्जेक्ट ] डेटा प्रकार माप की श्रेणी को परिभाषित करते हैं, जैसे ] या डेटा ऑब्जेक्ट वास्तविक रिकॉर्ड हैं, जो [FLT:] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

प्रमुख अवयव

  • HKHealthStore - सभी हेल्थ किट ऑपरेशन के लिए केंद्रीय प्रवेश बिंदु।
  • HKObjectType – एक प्रकार का स्वास्थ्य डेटा (मात्रा, श्रेणी, या विशेषता) पहचानता है।
  • HKSampleQuery – संग्रहीत नमूनों का एक निश्चित सेट प्राप्त करता है।
  • HKStatisticsQuery - एक समय अंतराल पर कुल मान (sum, औसत, मिनट, अधिकतम, आदि) को पूरा करता है।
  • HKObserverQuery - निर्दिष्ट डेटा प्रकारों में परिवर्तन के लिए मॉनिटर, पृष्ठभूमि अद्यतन सक्षम करने के लिए।

अनुमतियों की स्थापना - अनुरोध एक्सेस

किसी भी डेटा विनिमय से पहले, आपके ऐप को अनुमति देने का अनुरोध करना चाहिए ]]. आपको ]] और ] कुंजी के साथ अपनी में दोनों पढ़ने और लिखने की अनुमति लेनी चाहिए। फिटनेस ट्रैकिंग के लिए, आप आम तौर पर चरण गिनती, सक्रिय ऊर्जा, हृदय गति और संभावित रूप से कसरत लिखने के लिए पढ़ा।

import HealthKit

let healthStore = HKHealthStore()

func requestHealthPermissions() {
 guard HKHealthStore.isHealthDataAvailable() else { return }
 let readTypes: Set<HKObjectType> = [
 HKObjectType.quantityType(forIdentifier: .stepCount)!,
 HKObjectType.quantityType(forIdentifier: .heartRate)!,
 HKObjectType.quantityType(forIdentifier: .activeEnergyBurned)!,
 HKObjectType.categoryType(forIdentifier: .sleepAnalysis)!
 ]
 let writeTypes: Set<HKSampleType> = [
 HKObjectType.workoutType()
 ]
 healthStore.requestAuthorization(toShare: writeTypes, read: readTypes) { success, error in
 // Handle response
 }
}

हमेशा अधिकृत कॉलबैक को कृपापूर्वक संभाल लें। यदि उपयोगकर्ता घटता है, तो अवरुद्ध कार्यक्षमता से बचें; बजाय, समझाएं कि डेटा की आवश्यकता क्यों है और विकल्प (जैसे, मैनुअल प्रविष्टि) प्रदान करते हैं। याद रखें कि अनुमतियाँ बाद में हेल्थ ऐप के सोर्स टैब में बदल दी जा सकती हैं।

स्वास्थ्य डेटा

HealthKit डेटा को कुशलतापूर्वक लाने के लिए कई क्वेरी प्रकार प्रदान करता है। फिटनेस ऐप्स के लिए सबसे आम नमूना क्वेरी और सांख्यिकी क्वेरी हैं।

HKSampleQuery – कच्चे डेटा को पुनः प्राप्त करना

] का प्रयोग करें जब आपको व्यक्तिगत रिकॉर्ड की आवश्यकता होती है, जैसे कि अंतिम 100 हृदय गति रीडिंग या आज के चरण लॉग। तारीख, स्रोत या मूल्य द्वारा फ़िल्टर करने के लिए एक भविष्यवाणी निर्दिष्ट करें। प्रदर्शन के लिए, हमेशा रिटर्न किए गए परिणामों की संख्या को सीमित करें।

let stepType = HKQuantityType.quantityType(forIdentifier: .stepCount)!
let startDate = Calendar.current.startOfDay(for: Date())
let predicate = HKQuery.predicateForSamples(withStart: startDate, end: Date(), options: .strictStartDate)

let query = HKSampleQuery(sampleType: stepType, predicate: predicate, limit: HKObjectQueryNoLimit, sortDescriptors: nil) { query, samples, error in
 guard let samples = samples as? [HKQuantitySample] else { return }
 // Process samples
}
healthStore.execute(query)

HKStatisticsQuery - सकल डेटा

कुलों, औसत या अधिकतम के लिए एक विशिष्ट अवधि (जैसे दैनिक चरण गिनती) पर, का उपयोग करें। यह व्यक्तिगत नमूनों को संक्षेप में प्रस्तुत करने से अधिक कुशल है।

let statisticsQuery = HKStatisticsQuery(quantityType: stepType, quantitySamplePredicate: predicate, options: .cumulativeSum) { query, result, error in
 let sum = result?.sumQuantity()?.doubleValue(for: HKUnit.count()) ?? 0
 // Update UI with total steps
}
healthStore.execute(statisticsQuery)

The time-series Data, the time-Series Data, and the time-series Data

पिछले सप्ताह के लिए प्रति दिन एक चार्ट प्रदर्शित करने के लिए, का उपयोग करें। यह एक शुरू और अंत तारीख के बीच प्रत्येक दिन के लिए आंकड़े बैच करता है, जिससे यह रुझान के लिए आदर्श बना।

let now = Date()
let sevenDaysAgo = Calendar.current.date(byAdding: .day, value: -7, to: now)!
let anchorDate = Calendar.current.startOfDay(for: now)
let daily = DateComponents(day: 1)

let collectionQuery = HKStatisticsCollectionQuery(quantityType: stepType, quantitySamplePredicate: nil, options: .cumulativeSum, anchorDate: anchorDate, intervalComponents: daily)
collectionQuery.initialResultsHandler = { query, results, error in
 results?.enumerateStatistics(from: sevenDaysAgo, to: now) { statistics, stop in
 let steps = statistics.sumQuantity()?.doubleValue(for: HKUnit.count()) ?? 0
 // Append steps for statistics.startDate
 }
}
healthStore.execute(collectionQuery)

फिटनेस डेटा प्रदर्शित करना

रॉ नंबर स्पष्ट दृश्यता के बिना अर्थहीन हैं। एक अच्छी तरह से डिज़ाइन किया गया यूआई हेल्थ किट डेटा को प्रेरणादायक अंतर्दृष्टि में बदल देता है। निम्नलिखित दृष्टिकोणों पर विचार करें:

  • ]Summary Cards: आज के चरण की गिनती, सक्रिय मिनट, और एक कॉम्पैक्ट डैशबोर्ड में हृदय गति प्रवृत्ति को दर्शाता है।
  • Charts:] साप्ताहिक चरणों, मासिक सक्रिय ऊर्जा, या हृदय गति क्षेत्र को प्रदर्शित करने के लिए लाइन या बार चार्ट का उपयोग करें। Swift चार्ट (iOS 16+) या ]Charts (DGCharts) जैसे पुस्तकालयों को सहज रूप से एकीकृत करें।
  • Goal Rings: Apple के क्लासिक गतिविधि के छल्ले को ऊर्जा, व्यायाम और स्टैंड घंटे को देखने के लिए अनुकरण किया जा सकता है।
  • Workout Summaries: वर्तमान अवधि, औसत हृदय गति, दूरी, और कैलोरी प्रत्येक लॉगेड कसरत के लिए जला दिया।

उदाहरण: एक कदम गिनती डैशबोर्ड का निर्माण

एक लाइव-अपडेटिंग स्टेप काउंटर बनाने के लिए SwiftUI के ऊपर आंकड़े क्वेरी को मिलाएं:

struct StepCardView: View {
 @State private var steps: Double = 0

 var body: some View {
 VStack {
 Text("Steps")
 .font(.headline)
 Text("\(Int(steps))")
 .font(.largeTitle)
 .bold()
 }
 .onAppear { fetchTodaySteps() }
 }

 func fetchTodaySteps() {
 // Use HKStatisticsQuery as shown earlier
 }
}

HKObserverQuery के साथ वास्तविक समय अद्यतन

अपने डैशबोर्ड को मैन्युअल रिफ्रेश के बिना रखने के लिए, एक स्थापित करें। सिस्टम आपके ऐप को सूचित करता है जब नया डेटा हेल्थ किट (यहां तक कि ऐप पृष्ठभूमि पर है, यदि आप पृष्ठभूमि वितरण के लिए पंजीकरण करते हैं)।

let observerQuery = HKObserverQuery(sampleType: stepType, predicate: nil) { query, completionHandler, error in
 DispatchQueue.main.async { self.fetchTodaySteps() }
 completionHandler()
}
healthStore.execute(observerQuery)

पृष्ठभूमि अद्यतन के लिए, आपको ] भी कहा जाना चाहिए। ध्यान दें कि आईओएस बैटरी को संरक्षित करने के लिए पृष्ठभूमि कॉलबैक को थ्रॉटल करता है; इस स्परिंगली का उपयोग करें और हमेशा पूरा होने वाले हैंडलर को संभाल लें।

गोपनीयता और सुरक्षा के लिए सर्वश्रेष्ठ अभ्यास

स्वास्थ्य डेटा संवेदनशील है। एप्पल सख्त नियमों को लागू करता है और अनुपालन करने में विफल रहता है जिससे ऐप स्टोर अस्वीकृति हो सकती है।

  • ]मिनी डेटा अनुरोध: केवल डेटा प्रकार के आपके ऐप का वास्तव में उपयोग करने का अनुरोध करते हैं। यदि आपको केवल चरण गिनती की आवश्यकता है तो "स्वास्थ्य रिकॉर्ड" के लिए पूछने से बचें।
  • ]Clear स्पष्टीकरण स्ट्रिंग: Infinite.plist में उपयोग विवरण विशिष्ट होना चाहिए, उदाहरण के लिए, "इस एप्लिकेशन ने अपनी दैनिक गतिविधि दिखाने के लिए अपनी कदम गिनती पढ़ी।
  • ]]Never share raw HealthKit Data off-device बिना किसी स्पष्ट उपयोगकर्ता सहमति के। यदि आपके बैकएंड, अनाम और एन्क्रिप्टेड डेटा को सिंक करना है।
  • ]Respect Authorization change: पर्यवेक्षकों को ] के माध्यम से अनुमतियों को रद्द करने का निरीक्षण करें या प्रत्येक क्वेरी से पहले प्राधिकरण की स्थिति की जांच करके।
  • Handle त्रुटियों को gracefully: HealthKit क्वेरी अधिकृत करने, डेटा की कमी, या डेटाबेस त्रुटियों के कारण विफल हो सकता है। हमेशा एक उपयोगकर्ता के अनुकूल संदेश दिखाएं।

एप्पल वॉच और अन्य स्रोतों के साथ एकीकरण

हेल्थ किट स्वचालित रूप से Apple वॉच, थर्ड पार्टी ऐप और मैनुअल प्रविष्टियों से डेटा को एकत्रित करता है। आपके आईओएस ऐप को स्रोत को अलग करने की आवश्यकता नहीं है जब तक कि आप विशेष रूप से स्रोत द्वारा फ़िल्टर करना चाहते हैं। वर्कआउट ऐप के लिए, ऑब्जेक्ट्स को हेल्थ किट पर विचार करें। जब कोई उपयोगकर्ता Apple वॉच पर एक कसरत शुरू करता है, तो सिस्टम स्वचालित रूप से मीट्रिक रिकॉर्ड कर सकता है; आपका साथी आईओएस ऐप बाद में उन लोगों को पढ़ सकता है।

कसरत डेटा लिखने के लिए:

let workout = HKWorkout(activityType: .running, start: workoutStart, end: workoutEnd, duration: duration, totalEnergyBurned: energy, totalDistance: distance, metadata: nil)
healthStore.save(workout) { success, error in
 // Handle
}

आप भी संबद्ध नमूने जोड़ सकते हैं (जैसे, हृदय गति, मार्ग) कसरत के लिए ] और ] का उपयोग कर।

Them से बचने के लिए कैसे

  • ]Assuming data हमेशा उपलब्ध है: एक नया उपयोगकर्ता स्वास्थ्य किट डेटा नहीं हो सकता है। अपने यूआई को प्लेसहोल्डर दिखाने के लिए डिज़ाइन करें या उपयोगकर्ता को स्वास्थ्य ऐप या एप्पल वॉच के माध्यम से ट्रैकिंग शुरू करने के लिए प्रोत्साहित करें।
  • ]एक बार बहुत अधिक डेटा क्वेरी: बड़े प्रश्नों (जैसे, पिछले वर्ष के लिए सभी नमूने) स्मृति पर धीमी और दुर्घटना हो सकती है। तिथि भविष्यवाणी का उपयोग करें और सीमा के साथ पैसेंजा।
  • ]Ignoring time zones: HealthKit timetamps UTC में हैं। जब दिन तक समूहित होता है, तो उपयोगकर्ता के स्थानीय समय क्षेत्र में बदलाव करने के लिए गलत तरीके से बचें।
  • ]]]मुख्य धागा बंद: HealthKit क्वेरी अतुल्य हैं लेकिन उनके पूरा हैंडलर मुख्य धागे पर नहीं चल सकते हैं। को UUI अद्यतन डिस्पैच करें।
  • ]> स्वास्थ्य डेटा उपलब्धता की जांच के लिए: HealthKit iPad और iPod touch. हमेशा ]] कॉल करें।

स्वास्थ्य रिकॉर्ड्स और नैदानिक डेटा के साथ विस्तार

नैदानिक स्वास्थ्य पर ध्यान केंद्रित करने वाले ऐप्स के लिए, HealthKit भी हेल्थ रिकॉर्ड्स (FHIR के माध्यम से) का समर्थन करता है। उपयोगकर्ता की अनुमति के साथ, आपका ऐप टीकाकरण, प्रयोगशाला परिणाम, दवा और शर्तों तक पहुंच सकता है। यह दवा ट्रैकर्स, एलर्जी चेकर्स, या पुरानी स्थिति प्रबंधन के लिए संभावनाओं को खोलता है। हालांकि, इन डेटा प्रकारों को Apple से हेल्थ रिकॉर्ड्स पात्रता के लिए अतिरिक्त समीक्षा की आवश्यकता होती है।

निष्कर्ष

आईओएस हेल्थ किट एपीआई फिटनेस डेटा को ट्रैक करने और प्रदर्शित करने के लिए एक मजबूत, गोपनीयता-केंद्रित नींव प्रदान करता है। अपनी अनुमति मॉडल, क्वेरी प्रकार और सर्वोत्तम प्रथाओं को समझने के द्वारा, आप एक ऐप बना सकते हैं जो उपयोगकर्ता के स्वास्थ्य पारिस्थितिकी तंत्र के साथ सहज रूप से एकीकृत होता है। सरल कदम और हृदय गति क्वेरी के साथ शुरू करें, फिर धीरे-धीरे पृष्ठभूमि अद्यतन, घड़ी कनेक्टिविटी और नैदानिक रिकॉर्ड जैसी अधिक उन्नत सुविधाओं को शामिल करें। परिणाम एक शक्तिशाली उपकरण है जो न केवल उपयोगकर्ताओं को अपने स्वास्थ्य के बारे में सूचित करता है बल्कि उन्हें अपने फिटनेस लक्ष्यों को प्राप्त करने के लिए प्रेरित करता है।

आगे पढ़ने के लिए, आधिकारिक ]Apple HealthKit प्रलेखन , ]HealthKit मानव इंटरफेस दिशानिर्देश]], और सामुदायिक संसाधनों जैसे Ray Wenderlich's HealthKit ट्यूटोरियल ]] हाथों पर कोड उदाहरणों के लिए।