Apple'ın SağlıkKit API'sine Giriş

Kişisel sağlık verilerinin uygulanabilir öngörüleri kullandığı bir çağda, iOS HealthKit API, geliştiricilerin fitness ve sağlık uygulamaları oluşturmaları için bir temel taşı haline geldi.Bu çerçeve, Apple tarafından iOS 8 ile tanıtıldı, birleştirilmiş, güvenli havuz cihazı sağlık ve aktivite bilgileri için.In API'nin bütünleştirilmesi ve görüntülemesi için uygulamanız, kullanıcıların adımlarını konsolide bir araya getirmelerine izin verebilir, kalp oranı, uyku analizini, diyet loglarını ve hatta klinik kayıtları sağlar.Bu makale, sağlık ve aktivite bilgilerini nasıl optimize etmek için SağlıkKit'i nasıl araştırır ve görüntülemek için, veri akışlarını, uygulama akışlarını, uygulama stratejileri, verileri örtme ve en iyi şekilde yazabilirsiniz.

SağlıkKit'ın Mimarlıkını Anlamak

SağlıkKit, iki temel konsept etrafında veri düzenler: 0:0)))) ve [[Döneticiler)[Döneticiler[Döneticiler için geçerli), veya [[Döneticiler için (yalnızca) veya [[Döneticiler için (örneğin,) veya [[Döneticiler (yalnızca, e-posta ile şifreli erişimli erişimler için) izin verilir.

Anahtarlı Anahtarlar

  • [FONT:0)HKSağlık Dükkanı[DÜT:1] – Tüm SağlıkKit operasyonları için Merkez girişi noktası.
  • [FONT=0)HKObjectType[DÜT:1) - Bir tür sağlık verilerini (kahkadar, kategori veya karakteristik) belirtir.
  • [FONT=0)HKSampleQuery[[Döntilmiş: 1) sabit bir depolanmış örnek.
  • [FONT=0)HARKİstatistikler[Döneticiler: 0,0)HARLARI (ortalama, ortalama, min, max, vs.) bir süre aralığı üzerinde.
  • [FONT:0)HKObserverQuery[[Dönetici: 1 ) – Veri türlerini belirtecek değişiklikler için monitörler, arka güncelleştirmeleri sağlar.

Ayarlama izni - Access

Herhangi bir veri değişiminden önce, uygulamanız, uygulamanız, $ 3.D:2 ile izin talep etmelidir.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.

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
 }
}

Her zaman izin verilen çağrıyı mükemmel bir şekilde idare edin. Eğer kullanıcı azalırsa, işlevselliği engellemeden kaçının; bunun yerine, verilerin neden gerekli olduğunu ve alternatif (örneğin, manuel giriş) sağlamasını sağlayın.Bu izinlerin Sağlık Uygulamalarının Kaynağında daha sonra değiştirilebileceğini unutmayın.

Sorgulama Fitness Data

SağlıkKit, verileri verimli bir şekilde getirmek için birkaç sorgu türü sunar. Fitness uygulamaları için en yaygın örnek sorgular ve istatistikler sorgularıdır.

HIZSampleQuery – Retrieving Raw Data

UseFLT:7 Bireysel kayıtlarınıza ihtiyacınız olduğunda, son 100 kalp oranı okumaları veya bugün adım girişleri gibi. tarih, kaynak veya değer için filtreye önceden işaretleyin.Performans için, her zaman sonuçların sayısını sınırlayın.

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)

HırsırıcılarQuery – Aggregated Data

Toplamlar, ortalamalar veya belirli bir süre boyunca maksimumlar (örneğin, günlük adım sayımı), kullanımDANFLT:9). Bu, bireysel örneklerden çok daha verimlidir.

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)

HırsırıcılarCollectionQuery – Zaman serisi Data

Geçen hafta için günde bir adım grafiği görüntülemek için, [[ŞUygunT:11] kullanın. Başlangıç ve son tarih arasında her gün için toplu istatistik, trendler için ideal hale getirin.

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)

Fitness Data

Raw numaraları açık bir görselleştirme olmadan anlamsızdır. İyi tasarlanmış bir UI, SağlıkKit verilerini motivasyonel anlayışlara dönüştürür. aşağıdaki yaklaşımlar dikkate alın:

  • [FONT:0)Summary Kartlar:[Dönetici:[Dönetici:0)Bugünün adım sayımını, aktif dakikaları ve kalp oranı trendini kompakt bir paniğe gösterir.
  • [FONT=0)Charts:[D)[DGCharts) Sürekli olarak aktif enerji veya kalp oranı bölgeleri görüntülemek için çizgi veya bar grafikler kullanın.TheCharts:) (iOS 16+) veya [[FLT: 5)))Charts).
  • [FONT:0]Goal Halkalar:[Döneticileri:[Döneticileri 1 ) Apple'ın klasik Aktivite halkaları, enerji, egzersiz ve saatlerce görselleştirilebilmektedir.
  • [FONT:0]Workout Summaries:[Dönem:[Dönem: [DüzgT:1] Present süresi, ortalama kalp oranı, mesafe ve kalori her giriş egzersizi için yakıldı.

Örnek: Bir Adım Kont Dashboard inşa

SwiftUI ile canlı bir adım karşı koymak için yukarıdaki istatistikler sorguyu bir araya getirin:

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 ile Gerçek Zaman Güncellemeleri

Panolarınızı manuel yenileme olmadan tutmak için, aİLDİT:14'i kurmak. Sistem, yeni veriler SağlıkKit'e kaydedildiğinde uygulamanızı belirtmez (örneğin, uygulama önceden kayıt yaptırırsanız bile).

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

Arka plan güncelleştirmeleri için, iOS throttles arka plan çağrılarını bataryayı korumak için de aramanız gerekir; bu uyarıyı kullanın ve her zaman tamamlanma eller ile idare edin.

Gizlilik ve Güvenlik için en iyi uygulamalar

Sağlık verileri hassastır. Apple katı kuralları uygular ve App Store reddedilmesine yol açabilir.

  • [[0)Minimal veri talepleri:[Dönetici:[Dönetici:0) Yalnızca uygulamanızın aslında kullandığı veri türlerini talep edin. Sadece adım saymanıza gerek kalmadan "sağlık kayıtları" isteyin.
  • [[Döneticileri: [Dönetici: 0,0) Info.plist'deki kullanım açıklaması özel olmalıdır, e.g., “Bu uygulama günlük aktivitenizi göstermek için adım saymaktadır.
  • [FONT:0) Asla çiğ SağlıkKit verilerini açık kullanıcı onayı olmadan (CFOT:1) paylaşma. Geri uç, anonim ve şifreli verilere senkronize ederseniz.
  • [[Dönetici:0)Repektif yetki değişiklikleri:[Dönetici:[Dönetici:0) Kullanıcının izinlerini askıya aldığında veya her sorgudan önce izin verme durumunu kontrol ederek.
  • [FONT:0]Handle hataları lütufla:[Dönetici:[Dönetici:0) SağlıkKit sorguları yetkilendirmeden, veri eksikliğinden veya veritabanı hatalarından dolayı başarısız olabilir.Her zaman bir kullanıcı dostu mesaj gösterir.

Apple Watch ve Diğer Kaynaklarla bütünleşme

SağlıkKit otomatik olarak Apple Watch'tan veri toplar, üçüncü taraf uygulamalar ve manuel girişler. iOS uygulamanız, özellikle kaynak tarafından filtrelenmek istemiyorsanız kaynağı ayırt etmek zorunda değildir.For egzersiz uygulamaları için, yazması:TELFLT:18) nesneler to HealthKit. bir kullanıcı Apple Watch'ta bir egzersiz başladığında, sistem otomatik olarak rekor metrikleri kaydedebilir; arkadaşınız iOS uygulamanız daha sonra bunları okuyabilmektedir.

Egzersiz verileri yazmak için:

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

Ayrıca ilişkili örnekleri (örneğin, kalp oranı, rota) egzersiz için [[DüzD:) ve [[Döneticileri) ekleyebilirsiniz.

Ortak Pitfalls ve Them'dan Nasıl Kaçırmak

  • [FONT:0]Verilerin her zaman mevcut olduğunu varsayın:), Yeni bir kullanıcı, yer sahipleri göstermek veya kullanıcınızı Sağlık Uygulama veya Apple Watch aracılığıyla takip etmeye teşvik edebilir.
  • [FONT:0) Bir kerede çok fazla veri harcıyor: Büyük sorgular (örneğin, geçen yıl için tüm örnekler) hafızada yavaş ve kaza olabilir.Geçmişleri ve paginate limitlerle.
  • [FONT:0) Zaman bölgeleri görmezden gelin: [Dönetici:[Dönetici:0) SağlıkKit zaman notampleri UTC'dedir. gün gruplama, kullanıcının yerel zaman bölgesine yanlışlık önlemek için dönüştürülür.
  • [FONT=0] Ana konuya dikkat edin:[Dönetici: 0,4] SağlıkKit sorguları bir senkronizasyondur, ancak tamamlanma eller ana konuyla ilgili olarak çalıştırılamaz. Dispatch UI güncelleştirmeleri ile [[DÜye Olmayanlar ►DÜye Olmayanlar.
  • [FONT:0)Sağlık verilerinin kullanılabilirliğini kontrol etmek için yalvarmak: SağlıkKit iPad ve iPod dokunuşlarında kullanılamaz. Her zaman herhangi bir etkileşimden önce 444FLT:23 çağrır.

Sağlık Kayıtları ve Klinik Veriler ile Genişleme

Klinik sağlık üzerine odaklanmış uygulamalar için, SağlıkKit ayrıca ilaç pistleri, alerji kontrolleri veya kronik durum yönetimi için olanak sağlar. Ancak, bu veriler Apple'dan en fazla alıntı gerektirir.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

iOS HealthKit API, takip etmek ve fitness verilerini görüntülemek için sağlam, gizlilik odaklı bir temel sunuyor. İzin modelini, sorgu türlerini ve en iyi uygulamaları anlamakla, kullanıcıların sağlık ekosistemiyle sorunsuz bir şekilde entegre edebileceğiniz bir uygulama oluşturabilirsiniz. Basit bir adım ve kalp oranı sorguları ile başlayın, sonra yavaş yavaş bağlantı ve klinik kayıtları gibi daha gelişmiş özellikler de dahil edebilirsiniz. Sonuç, sadece sağlık hedefleriniz hakkında kullanıcıları bilgilendiren güçlü bir araçtır.

Daha fazla okuma için resmi olarak [[0) Apple HealthKit Dokümantasyon[Dönetici:2)SağlıkKit İnsan Interface Kılavuzları[Dönetici: 3) ve benzeri topluluk kaynaklarına bakınız:Ray Wenderlich'in SağlıkKit lik[Dönemli kod örnekleri için).