Table of Contents
Johdanto Apple...
Aikakaudella, jolloin henkilökohtaiset terveystiedot ajavat toimintakelpoisia oivalluksia, iOS HealthKit API:stä on tullut kehittäjien kunto- ja hyvinvointisovellusten kulmakivi. Tämä Applen iOS 8:lla käyttöön ottama kehys tarjoaa yhtenäisen, turvallisen arkiston terveys- ja toimintatietoja varten. Integroimalla HealthKit:n sovelluksesi voi lukea ja kirjoittaa terveyssovelluksen datavarastoon, jolloin käyttäjät voivat nähdä yhtenäisen näkymän askeleistaan, sykkeestään, unianalyysistä, ruokavaliolokeistaan ja jopa kliinisistä tiedoistaan. Tässä artikkelissa selvitetään, miten HealthKit API:tä voidaan hyödyntää kuntotietojen tehokkaaseen seurantaan ja näyttämiseen, jotka kattavat lupatyönkulun, kyselystrategiat, tiedon visualisoinnin ja tuotannon parhaat käytännöt.
HealthKit... - Arkkitehtuurin ymmärtäminen
HealthKit järjestää tietoja kahden ensisijaisen käsitteen ympärille: []tietotyypit[[] ja [tietokohteet[[]. Tietotyypit määrittelevät mittausluokan, kuten [ tai . Tietokohteet ovat todellisia tietueita, jotka voivat olla [] näytteitä[]] (yksi mittaus tai tapahtuma), correlations[[] (liittyvien näytteiden ryhmät) tai [] työkomennot[. TerveysKitin kauppa on salattu ja synkronoitu iCloudin kautta, mutta vain silloin, kun käyttäjä nimenomaisesti mahdollistaa Terveyssynkronoinnin. Jokainen käyttöpyyntö on hyväksyttävä käyttäjän kautta järjestelmän dialogi, varmistaa yksityisyyden suojan vaatimustenmukaisuuden.
Avainkomponentit
- HKHealthStore .
- HKObjectType . .
- HKSampleQuery . Hakee kiinteän joukon varastoituja näytteitä.
- HKTilastointiQuery .
- HKObserverQuery . ... ...................................................................................................................................................................................................................................
Käyttölupien asettaminen ...
Ennen tietojen vaihtoa sovelluksesi on pyydettävä lupaa []. Sinun on ilmoitettava sekä lukea että kirjoittaa käyttöoikeudet [ kanssa [ ja [] avaimet. Kuntoilun seurantaan, olet tyypillisesti lukenut askelmäärä, aktiivinen energia, syke, ja mahdollisesti kirjoittaa harjoituksia.
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
}
}
Jos käyttäjä ei toimi, selitä, miksi tietoja tarvitaan ja anna vaihtoehto (esim. manuaalinen merkintä). Muista, että oikeuksia voidaan muuttaa myöhemmin Health-sovelluksen Lähteet -välilehdessä.
Kysytään kuntotietoja
HealthKit tarjoaa useita kyselytyyppejä tietojen tehokkaaseen noutamiseen. Yleisimmät kunto-sovelluksille ovat otantakyselyt ja tilastokyselyt.
HKSampleQuery ...
Käytä , kun tarvitset yksittäisiä tietueita, kuten viimeiset 100 sykelukemaa tai tänään. Määritä esivalinta suodattaa päivämäärän, lähde, tai arvo. Suorituksen, aina rajoittaa tulosten määrä takaisin.
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)
HKTilastotQuery ...
Kokonaismäärien, keskiarvojen tai enimmäismäärien osalta tiettynä ajanjaksona (esim. päivävaiheiden lukumäärä), käytetään . Tämä on paljon tehokkaampaa kuin yksittäisten näytteiden yhteenlasku.
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)
HKTilastotKokoelmakysely ... Aikasarjatiedot
Näytä kaavio vaiheista päivässä viime viikolla, käytä . Se erittää tilastoja jokaisen päivän välillä alku- ja päättymispäivä, joten se sopii trendeihin.
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)
Näytetään kuntotiedot
Raw numerot ovat merkityksettömiä ilman selkeää visualisointia. Hyvin suunniteltu käyttöliittymä muuttaa HealthKit-datan motivaatioksi.
- Suurimmat kortit: [ Näytä tänään state count, aktiivinen minuuttia, ja syke trendi kojelauta.
- Kirjastot:[ Käytä rivi- tai viivatauluja näyttääksesi viikoittain vaiheet, kuukausittain aktiivinen energia, tai sykevyöhykkeet. Kirjastot kuten []Swift kaaviot[] (iOS 16+) tai []Kirjastot[ (DGCharts) integroituvat saumattomasti.
- Tavoitteena renkaat: [ Applen klassisia aktiivisuusrenkaita voidaan jäljitellä visualisointi energiaa, liikuntaa ja seisoa tuntia.
- Työn yhteenveto:[ Nykyiset kesto, keskimääräinen syke, etäisyys, ja kaloreita poltettu jokaisen kirjautuneen harjoituksen.
Esimerkki: Step Count Dashboard -levyn rakentaminen
Yhdistä yllä oleva tilastokysely SwiftUI:n kanssa luodaksesi live-updating-askellaskurin:
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
}
}
Reaaliaikapäivitykset HKObserverQueryllä
Jotta kojelautasi ei päivityisi manuaalisesti, aseta . Järjestelmä ilmoittaa sovelluksestasi, kun uusi tieto tallennetaan HealthKitille (jopa sovelluksen tausta-aineistona, jos rekisteröit taustatoimituksen).
let observerQuery = HKObserverQuery(sampleType: stepType, predicate: nil) { query, completionHandler, error in
DispatchQueue.main.async { self.fetchTodaySteps() }
completionHandler()
}
healthStore.execute(observerQuery)
Taustapäivityksiä varten sinun täytyy myös soittaa . Huomaa, että iOS kaasuttaa taustan takaisinkytkentää akun säilyttämiseksi; käytä tätä säästeliäästi ja aina käsittele loppuun saattamisen käsittelijää.
Parhaat käytännöt yksityisyyden suojaa ja turvallisuutta varten
Terveystiedot ovat arkaluonteisia. Apple valvoo tiukkoja sääntöjä, ja noudattamatta jättäminen voi johtaa App Store hylkäys.
- Minimal datapyyntö:[ Pyydä vain sovelluksen käyttämiä tietotyyppejä. Vältä pyytämästä terveystietoja, jos tarvitset vain askelmäärän.
- Tarkista selitysjonot:[ Käyttökuvaus Info.plist pitäisi olla tarkka, esim., Tämä sovellus lukee askelluku näyttää päivittäisen toiminnan.
- Älä koskaan jaa raakoja HealthKit-tietoja pois päältä[ ilman käyttäjän nimenomaista suostumusta. Jos synkronoit taustaosan kanssa, anonymisoi ja salaa tiedot.
- Huomaa, kun käyttäjä peruuttaa käyttöoikeudet tai tarkistamalla valtuutustilan ennen jokaista kyselyä.
- Käsivirheet hienovaraisesti:[ HealthKit-kyselyt saattavat epäonnistua valtuutusten, tietojen puutteen tai tietokantavirheiden vuoksi. Näytä aina käyttäjäystävällinen viesti.
Apple Watch -toimintoon integroituminen ja muut lähteet
HealthKit kokoaa automaattisesti Apple Watchin tiedot, kolmannen osapuolen sovellukset ja manuaaliset merkinnät. iOS-sovelluksen ei tarvitse erottaa lähdettä, ellet halua suodattaa sitä lähteittäin. Harkitkaa kirjoittamista [] HealthKit:lle. Kun käyttäjä aloittaa harjoituksen Apple Watch:ssa, järjestelmä voi tallentaa mittarit automaattisesti; kumppanisi iOS-sovellus voi lukea ne myöhemmin.
Kirjoittaaksesi harjoitustietoja:
let workout = HKWorkout(activityType: .running, start: workoutStart, end: workoutEnd, duration: duration, totalEnergyBurned: energy, totalDistance: distance, metadata: nil)
healthStore.save(workout) { success, error in
// Handle
}
Voit myös lisätä siihen liittyviä näytteitä (esim. syke, reitti) harjoituksiin käyttäen ja .
Yhteinen pitfalls ja miten välttää niitä
- Olettaen, että tiedot ovat aina saatavilla:[ Uusi käyttäjä voi olla ei HealthKit tietoja. Suunnittele käyttöliittymä näyttää paikanpitimiä tai kannustaa käyttäjää aloittamaan seuranta kautta Health sovellus tai Apple Watch.
- Liian paljon tietoa kerralla:[ Suuret kyselyt (esim. kaikki näytteet viime vuodelta) voivat olla hitaita ja kaatua muistissa. Käytä päivämäärää predikaatit ja paginaatti rajallisesti.
- Aikavyöhykkeiden huomiotta jättäminen:[ HealthKit aikaleimat ovat UTC. Päivittäin ryhmiteltyinä muunna käyttäjälle . Paikallinen aikavyöhyke, jotta vältetään väärät linjaukset.
- Päälangan haarautuminen:[ HealthKit-kyselyt ovat asynkronisia, mutta niiden valmistumista käsittelevät laitokset eivät saa toimia päälangalla. Lähetä käyttöliittymäpäivitykset tuotteeseen .
- ]Unohtakaa tarkistaa terveystietojen saatavuus:[] HealthKit ei ole saatavilla iPadilla ja iPod-kosketuksella. Soita aina ennen vuorovaikutusta.
Laajennetaan terveystietojen ja kliinisten tietojen avulla
TerveysKit tukee myös kliiniseen terveyteen keskittyvien sovellusten [terveystietoja[ (FHIR:n kautta). Käyttäjän luvalla sovelluksesi voi käyttää rokotusta, laboratoriotuloksia, lääkkeitä ja ehtoja. Tämä avaa mahdollisuuksia lääkitysseuraajille, allergiatarkistajille tai kroonisen tilan hallintaan. Nämä tietotyypit vaativat kuitenkin lisätarkastelua Applen terveystietojen oikeutukseen.
Päätelmät
iOS HealthKit API tarjoaa vankan, yksityisyyteen keskittyvän perustan kuntotietojen seuraamiseen ja näyttämiseen. Ymmärtämällä sen lupamallin, kyselytyypit ja parhaat käytännöt voit rakentaa sovelluksen, joka integroituu saumattomasti käyttäjän terveysekosysteemiin. Aloita yksinkertaisella askel- ja sykekyselyllä, sitten vähitellen lisää edistyneitä ominaisuuksia, kuten taustapäivityksiä, katsella liitettävyyttä ja kliinisiä tietoja. Tuloksena on tehokas työkalu, joka ei ainoastaan informoi käyttäjiä heidän terveydestään vaan motivoi heitä saavuttamaan kuntotavoitteet.
Lisätietoja saat viranomaiselta Apple HealthKit Documentation[, HealthKit Human Interface Guidelines, ja yhteisön resursseista, kuten []Ray Wenderlich.S HealthKit Tutorial[], kännissä-koodiesimerkkejä varten.