Ölçme ve Değerlendirme
Ios Healthkit API'sini izlemek ve Gösteri Fitness Data
Table of Contents
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).