Getting gang med HealthKit: Part 1
18
Del
Del
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter Komme i gang med HealthKit.Getting gang med HealthKit. Del 2
HealthKit rammeverk ble innført i fjor på WWDC 2014 som et enkelt sted hvor apps kan lagre , dele og lese helserelaterte data. Den nye helse app, som er brukerens visning i at data, var en av de flaggskip funksjonene i iOS 8.
En av de viktigste fordelene med HealthKit er at trenings- og helserelaterte apps kan enkelt dele data med hverandre. I løpet av det siste året, mange utviklere vedtatt HealthKit i sine apps og teknologisk avanserte brukere har kommet til å forvente at enhver fitness app integreres med HealthKit.
Det er mange fordeler, Gotchas og beste praksis når du arbeider med denne nye og spennende ramme. Nylig, jeg har hatt førstehånds erfaring med den HealthKit rammeverket når jeg legger til støtte for HealthKit til en av mine apps, Routie. Hvis du vurderer å bruke HealthKit i din egen app, så denne opplæringen er for deg.
Hvorfor skal jeg bry meg om HealthKit?
Jeg har allerede nevnt noen av fordelene med HealthKit, men hvis du ikke er solgt ennå, så la meg bare si at det er virkelig ikke så vanskelig å integrere HealthKit. Jeg vil også gå videre og si at det er lettere enn de fleste andre nye rammeverk som Apple introduserte. Selvsagt avhenger dette tungt på hva du ønsker å oppnå med det. Men generelt vil jeg si at forholdet mellom innsatsen det tar å integrere HealthKit og de fordelene det gir til brukerne er svært gunstig.
Bortsett fra enkel integrering i eksisterende apps, bringer det også mulighet å bygge helt ny kategori av apps. For eksempel kan du trekke ulike data fra HealthKit, for eksempel brukerens treningsøkter eller blodtrykk, og vise dem på en interessant måte, slik at det harde arbeidet med å samle inn disse dataene til andre apper.
Hva vil du lære ?
Mitt mål med denne opplæringen er å lære deg det grunnleggende ved å bygge en prøve app. I tillegg vil jeg gi deg en rekke nyttige tips og triks om hvordan du kan eller bør integrere HealthKit i dine egne apps. Etter å ha lest denne artikkelen, bør du ha en grunnleggende forståelse av HealthKit, klar til å bruke den i programmene dine.
Hva du bør vite
Følgende liste inneholder en rekke grunnleggende fakta om HealthKit at du bør være klar over:
HealthKit rammeverket er tilgjengelig siden iOS 8. Legg merke til at det er bare tilgjengelig på iPhone, ikke iPad
Apple er seriøse om personvern og det er derfor du. må eksplisitt be om tilgang til å lese og /eller skrive til HealthKit for hver datatype du trenger tilgang til. Brukeren har muligheten til å tillate tilgang for enkelte typer og benekte det for andre.
. Det er to hoveddatatyper, egenskaper og prøver. Egenskaper, for eksempel brukerens fødselsdato eller blodtype, vanligvis ikke endres. Eksempel representere data på et bestemt tidspunkt.
Økter, som tilhører den prøver kategori, er ment spesielt for representerer løyper, turer, turer, etc.
For mer informasjon om HealthKit rammeverk, besøke Apples HealthKit Work Reference.
Før vi kommer i gang
Jeg vet du er nok ivrig etter å starte med prøveprosjektet ved nå, men det er noen viktige ting du bør være klar over før du dykke i.
HealthKit butikken er kryptert når brukerens telefonen er låst. Det betyr at du ikke vil være i stand til å lese fra det når programmet er i bakgrunnen. Skriving til HealthKit, men fungerer også når telefonen er låst.
Nå som vi fikk dette ut av veien, la oss komme i gang med opplæringen.
The Prosjektet
Vi skal bygge en enkel app som integreres med HealthKit og forklarer noen av de grunnleggende begrepene rammeverket. Spesielt vil vi:
opprette et nytt prosjekt fra scratch og aktiver HealthKit
be brukeren om tillatelse til å få tilgang til sine helserelaterte data
lese bruker fødselsdato
skrive en vekt prøve å HealthKit
skrive en treningsøkt til HealthKit
1. Sette opp prosjektet
Launch Xcode, og velg Fil > New > Prosjekt ... Fra iOS > § programmet, velger du fanebasert applikasjon mal og klikk på Neste.
Tast HealthBasics som prosjektets Produktnavn og klikk på Neste. Velg hvor du vil lagre prosjektet og klikk på Opprett.
2. Aktivering HealthKit
I prosjekt Navigator til venstre, klikk på prosjektet, velger HealthBasics målet, og åpne kategorien Capabilities på toppen. Bla ned til HealthKit delen og aktiver HealthKit veksling bryteren til høyre. Bak kulissene, vil Xcode gjøre det nødvendige for å aktivere HealthKit.
3. Opprette brukergrensesnittet
For dette prosjektet, vil vi ikke være å bruke størrelsesklasser. Fordi størrelsesklasser er aktivert som standard, må vi manuelt deaktivere dem i Xcode. I prosjekt Navigator til venstre, velg Main.storyboard. Åpne Fil Inspektør på høyre og fjern avkrysningsruten Bruk størrelsesklasser.
Xcode vil vise deg en advarsel. Avvise den ved å klikke deaktivere størrelsesklasser, men sørg for å holde størrelsen klassedata for iPhone, som vist nedenfor.
Fjern de to etiketter i First View Controller. Deretter drar en etikett og en bryter fra objektbiblioteket til høyre ut på den første visningen Controller. Endre etiketten tekst til Helse integrering og satt tilstanden til bryteren til off.
Legg til to flere etiketter og en knapp til First View Controller. Endre første etiketten tekst til Bruker alder :, endre andre etikettens tekst til ??, og justere dem horisontalt som vist i skjermbildet under. Endelig endre knappen tittel å lese og plasser det til høyre for den andre etiketten. Den første scenen skal nå se slik ut:
Vi er ikke ferdig ennå. Legge til én etikett, et tekstfelt, og en knapp til First View Controller, samkjøre dem horisontalt som vist nedenfor. Endre etiketten tekst til brukervekt:. Og endre knappen tittel skrive
Velg tekstfeltet du nettopp har lagt til og, i Attributter Inspector, endre tastaturtype til tall og skille. Det er alt. Den første scenen skal nå se slik ut:
4. Opprette HealthKit manager
Vi kommer til å holde HealthKit relaterte kode i en egen klasse, GSHealthKitManager klasse. La oss lage den klassen nå.
I prosjekt Navigator, høyreklikker du på HealthBasics gruppen, og velg Ny fil .... Pass på Cocoa Touch Class er valgt fra listen over maler og klikk på Neste. Navn klassen GSHealthKitManager og klikk på Neste.
Åpne header fil av GSHealthKitManager klasse og erstatte filens innhold med følgende kode. Senere vil vi kalle disse metodene fra FirstViewController klassen
#import < UIKit /UIKit.h >interface GSHealthKitManager. NSObject + (GSHealthKitManager *) sharedManager, - (void) requestAuthorization, - (NSDate *) readBirthDate, - (void) writeWeightSample: (CGFloat) vekt,end
Deretter ope gjennomføringen fil av GSHealthKitManager klassen og erstatte innholdet med følgende:
#import "GSHealthKitManager.h" #import < HealthKit /HealthKit .h >interface GSHealthKitManager ()property (nonatomic, beholde) HKHealthStore * healthStore; @ enden @ implementering GSHealthKitManager + (GSHealthKitManager *) sharedManager {statisk dispatch_once_t pred = 0; statisk GSHealthKitManager * eksempel = null; dispatch_once (& pred, ^ {eksempel = [[GSHealthKitManager Alloc] init]; instance.healthStore = [[HKHealthStore Alloc] init];}); returnere eksempel;} - (void) requestAuthorization {if ([HKHealthStore isHealthDataAvailable] == NO) {//Hvis vår enhet ikke støtter HealthKit - > komme tilbake. komme tilbake; } NSArray * readTypes = @ [[HKObjectType characteristicTypeForIdentifier: HKCharacteristicTypeIdentifierDateOfBirth]]; NSArray * writeTypes = @ [[HKObjectType quantityTypeForIdentifier: HKQuantityTypeIdentifierBodyMass]]; [self.healthStore requestAuthorizationToShareTypes: [NSSet setWithArray: readTypes] readTypes: [NSSet setWithArray: writeTypes] ferdigstillelse: null];} - (NSDate *) readBirthDate {NSError * feil; NSDate * dateOfBirth = [self.healthStore dateOfBirthWithError: & error]; //Convenience metode for HKHealthStore å få fødselsdato direkte. if (! dateOfBirth) {NSLog (@ ". Enten en feil oppstod under henting av brukerens alder informasjon eller ingen har blitt lagret ennå I programmet ditt, kan du prøve å håndtere dette grasiøst."); } Returnere dateOfBirth;} - (void) writeWeightSample: (CGFloat) vekt {//Hver mengde består av en verdi og en enhet. HKUnit * kilogramUnit = [HKUnit gramUnitWithMetricPrefix: HKMetricPrefixKilo]; HKQuantity * weightQuantity = [HKQuantity quantityWithUnit: kilogramUnit doubleValue: vekt]; HKQuantityType * weightType = [HKQuantityType quantityTypeForIdentifier: HKQuantityTypeIdentifierBodyMass]; NSDate * nå = [NSDate dato]; //For hver prøve, trenger vi en prøvetype, mengde og en dato. HKQuantitySample * weightSample = [HKQuantitySample quantitySampleWithType: weightType mengde: weightQuantity Startdato: nå Sluttdato: nå]; [self.healthStore saveObject: weightSample withCompletion: ^ (BOOL suksess, NSError * feil) {if (suksess!) {NSLog (@ "Feil under lagring av vekt (% f) til Helse Store:.% @", vekt, feil); }}];.} @ Slutten
Mens de fleste av HealthKit relaterte kode er lett nok å forstå, la oss gå over hver metode for å sikre at vi er på samme side
sharedManager er en klassemetode som skaper singleton protestere første gang det kalles, og returnerer den forekomsten hver gang metoden kalles. Den dispatch_once funksjonen er en GCD (Grand Central Dispatch) funksjon som garanterer at blokken sendes til det kalles bare én gang, selv om sharedManager metoden ville bli kalt fra flere tråder samtidig.
writeWeightSample. Sparer vekt måling for å HealthKit. Jeg har kommentert koden så du bør ha en generell oversikt over hva som skjer i metoden. Når vi har HKQuantitySample objekt, sparer vi det til HKHealthStore eksempel, bruker sin saveObject: withCompletion: metode. Denne metoden brukes for alle typer helseopplysninger, og vi vil også bruke den i den andre delen av denne opplæringen ved lagring treningsøkter.
I dette trinnet, møtte du en rekke HealthKit klasser . Du kan lese mer om hver klasse i HealthKit Work Reference, men jeg skal gi deg en kort oppsummering av hver klasse.
HKQuantityType HealthKit bruker kvantums typer å lage prøvene som lagrer en numerisk verdi. Det anbefales å bruke quantityTypeForIdentifier: når du oppretter mengde typer. Noen eksempler på mengde typer sykler avstand, energi brent, skritt, og fly klatret.
Vi kan nå bruke GSHealthKitManager Singleton fra hvor som helst i vår søknad til å jobbe med HealthKit.
Konklusjon
I denne opplæringen, lærte du om det grunnleggende HealthKit rammeverket. Jeg har introdusert deg til rammene og pekte ut noen av de begrensningene å se opp for. Vi har også bygget fundamentet av prøven app og implementert GSHealthKitManager klassen, som vi skal bruke til å samhandle med HealthKit.
I den andre delen av denne serien, vil vi fortsette å bygge prøven app og integrere HealthKit. Du kan finne kildefilene for denne opplæringen på GitHub.