Το πλαίσιο 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 — ενός singleton που δημιουργείται αυτόματα κατά την εισαγωγή του πλαισίου. Μέσω του 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 — το κεντρικό singleton μέσω του οποίου εκτελούνται όλες οι λειτουργίες: αποθήκευση μέσω saveObject, ανάγνωση μέσω execute και διαγραφή μέσω deleteObject. Κάθε λειτουργία είναι ασύγχρονη και επιστρέφει το αποτέλεσμα μέσω closure, που απαιτεί σωστή διαχείριση σφαλμάτων.
Τα ερωτήματα χωρίζονται σε διάφορους τύπους: 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 GB, όριο αριθμού εγγραφών σε ένα ερώτημα — 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. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης