Komme i gang med HealthKit: Part 1

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.

  • HealthKit rammeverket gjør tung bruk av subclassing

    . 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.
  • Antall prøver er de mest vanlige datatypene. De inkluderer brukerens høyde og vekt, skritt tatt, brukerens temperatur, puls, etc.

    Ø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.

  • Du må forklare i App Store beskrivelse og i programmet ditt hvordan applikasjonen vil bruke data fra HealthKit. Hvis du ikke gjør det, kan det føre til avslag på programmet ditt.
  • Det er en ny seksjon i App Store gjennomgang retningslinjer som dekker HealthKit. Du bør definitivt lese gjennom det før du bestemmer deg for om du vil legge til støtte for HealthKit eller ikke.
  • Når din app integreres med HealthKit, må du gi en personvernpolicy for det. Apple anbefaler også noen dokumenter som spesifiserer hva Helse-relaterte personvernregler bør se ut. Det er viktig at personvernreglene forteller brukeren hvordan din app behandler sine data.

    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.

  • requestAuthorization er en metode som ber HealthKit butikken for tillatelse til å lese og /eller skrive de konkrete data som vi trenger. Du må kalle denne metoden før du bruker noen av skriving /lesing APIer av HKHealthStore klassen. Dersom brukeren benekter noen (eller alle) tillatelser, HealthKit vil ikke informere deg om det. Det faktum at brukeren ikke ønsker å dele noen typer data er informasjon i seg selv. Det er hvor mye Apple bryr seg om personvern.
  • readBirthDate metoden returnerer brukerens fødselsdato. Det returnere null hvis det var en feil, eller hvis brukeren ikke har gått inn i en fødselsdato

    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.

  • HKHealthStore Dette er ditt vindu til HealthKit data. Apple anbefaler å bruke bare én forekomst av denne klassen i programmet ditt, og som gir seg til Singleton mønster veldig bra. Du bruker det for å spørre brukeren om tillatelser, sparer prøver og /eller trening til HealthKit, og spørre de lagrede data. Dette er bare noen av oppgavene til HKHealthStore klassen.
  • HKUnit forekomster av denne klassen kan representere enten grunnleggende enheter, som for eksempel meter, sekunder og gram, eller komplekse enheter som er opprettet ved å kombinere grunnleggende enheter, slik som km /t eller eller g /m³. Komplekse enheter kan enkelt opprettes fra strengene.
  • HKQuantity forekomster av denne klassen lagrer en verdi (representert ved dobbel) for en gitt enhet (representert ved HKUnit). Du kan bruke doubleValueForUnit:.. Metode for å konvertere mengden verdi til enheten som er vedtatt i Et eksempel på en slik omlegging vil være å skape avstand mengde med enhet meter og ber for sin valuta i fot

    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.
  • HKQuantitySample En forekomst av denne klassen representerer en prøve som har en mengde type (representert ved HKQuantityType), en mengde (representert ved HKQuantity), og en start- og sluttdato. Dersom prøven ikke spenner over en periode, kan sluttdatoen være den samme som startdatoen.

    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.