เฟรมเวิร์ก HealthKit เป็นองค์ประกอบหลักของระบบนิเวศสุขภาพของ Apple ที่รวบรวมข้อมูลจาก iPhone, Apple Watch และอุปกรณ์ของบุคคลที่สามในพื้นที่จัดเก็บในเครื่องที่ปลอดภัย ตาม Apple Developer Documentation, 2025 แพลตฟอร์มรองรับข้อมูลมากกว่า 100 ประเภท — ตั้งแต่กิจกรรมทางกายและการนอนหลับไปจนถึงการทดสอบในห้องปฏิบัติการและตัวชี้วัดระบบหัวใจและหลอดเลือด คลังข้อมูลเดียว ของข้อมูลทางการแพทย์ช่วยให้การซิงโครไนซ์ระหว่างแอปพลิเคชันเป็นไปอย่างราบรื่นด้วยการควบคุมการเข้าถึงแบบละเอียดสำหรับข้อมูลแต่ละประเภท
ประเด็นสำคัญ
HealthKit คือเฟรมเวิร์กจาก Apple ที่เปิดตัวในปี 2014 พร้อมกับ iOS 8 ออกแบบมาเพื่อการจัดการข้อมูลสุขภาพและกิจกรรมทางกายของผู้ใช้แบบรวมศูนย์ แพลตฟอร์มทำหน้าที่เป็นคลังข้อมูลรวมศูนย์ที่แอปพลิเคชันและอุปกรณ์สามารถเขียนและอ่านข้อมูลทางการแพทย์ได้
แตกต่างจากโซลูชันของบุคคลที่สาม HealthKit ถูกสร้างไว้โดยตรงใน ระบบปฏิบัติการ iOS ซึ่งรับประกันประสิทธิภาพสูงและความปลอดภัยในระดับฮาร์ดแวร์ แอปพลิเคชันไม่สามารถเข้าถึงซึ่งกันและกันโดยตรง — การดำเนินการทั้งหมดผ่าน HKHealthStore ส่วนกลาง
ตาม Apple WWDC 2024 ผู้ใช้ iPhone มากกว่า 87% ในสหรัฐอเมริกาเคยใช้แอปสุขภาพในตัวอย่างน้อยหนึ่งครั้ง ซึ่งใช้ 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 แต่ละการดำเนินการเป็นแบบอะซิงโครนัสและส่งคืนผลลัพธ์ผ่าน 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 เริ่มต้นด้วย การเปิดใช้งานความสามารถ 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 แอปพลิเคชันไม่สามารถถ่ายโอนข้อมูล 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 ส่วน 5.1.1 — ข้อมูลทางการแพทย์และสุขภาพ ต้องมีคำอธิบายการใช้ข้อมูลในแอปพลิเคชันอย่างชัดเจน, นโยบายความเป็นส่วนตัว, การห้ามใช้ข้อมูลเพื่อการโฆษณา และการเข้ารหัสระหว่างการส่งผ่านเครือข่าย
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม