Komme i gang med HealthKit: Part 2

Getting gang med HealthKit: Part 2
17
Del
5
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 1

I den første delen av denne opplæringen, introduserte jeg deg til HealthKit rammeverket. Basert på min egen erfaring med å integrere HealthKit i en av mine apps, jeg har påpekt et par ting som er viktige å huske på. Vi har også begynt å jobbe på vårt utvalg app, HealthBasics, som vil forklare grunnleggende begreper fra arbeid med HealthKit.

I den første delen, vi implementert GSHealthKitManager klassen, som vi skal bruke til å samhandle med HealthKit . La oss nå bruke GSHealthKitManager klasse til å implementere funksjonaliteten til den første visningen kontrolleren av prøven app.

1. Implementering av First View Controller

I prosjekt Navigator, åpen FirstViewController.m og erstatte innholdet med følgende:
#import "FirstViewController.h" #import "GSHealthKitManager.h"@interface FirstViewController () property (nonatomic, svak) IBOutlet UILabel * ageLabel;property (nonatomic, svak) IBOutlet UITextField * weightTextField; @ enden @ implementering FirstViewController- (IBAction) healthIntegrationButtonSwitched: (UISwitch *) avsender {if (sender.isOn) {[[ ,,,0],GSHealthKitManager sharedManager] requestAuthorization]; } Else {//Muligens deaktivere HealthKit funksjonaliteten i programmet ditt. }} - (IBAction) readAgeButtonPressed: (id) avsender {NSDate * Fødsels = [[GSHealthKitManager sharedManager] readBirthDate]; if (fødsels == null) {//Enten brukeren ikke angi dato, eller en feil oppstod. Bare tilbake. komme tilbake; } NSDateComponents * ageComponents = [[NSCalendar currentCalendar] komponenter: NSCalendarUnitYear from: Fødsels todate: [NSDate dato] Alternativer: 0]; self.ageLabel.text = [@ (ageComponents.year) stringValue];} - (IBAction) writeWeightButtonPressed: (id) avsender {[[GSHealthKitManager sharedManager] writeWeightSample: self.weightTextField.text.floatValue];} @ slutten

Hvis du har litt iOS utvikling erfaring, da gjennomføringen bør ikke være vanskelig å forstå. I den første visningen kontrolleren, reagerer vi brukeren veksling bryteren og trykke på en av knappene. Hver av disse inter utløser en metode for GSHealthKitManager klassen.

Det er en grunn til at jeg har valgt å bruke en bryter for å be brukeren om tillatelse til å få tilgang til sine HealthKit data. Når du forstår implementeringen, vil du forstå at det er en mye bedre løsning.

Det er lett for brukeren å forstå at når bryteren er på, integrerer app med HealthKit. Når den er slått av, det gjør det ikke. I tillegg til det, for å snu denne bryteren på for første gang vil be brukeren gi tilgang til hvilke typer helseopplysninger applikasjonen vil bruke. Dette, igjen, er en god brukeropplevelse, fordi brukeren forstår hvorfor hun blir bedt om, og hvilke fordeler hun får ved å tillate tilgang.

2. Tilkobling av brukergrensesnitt

I prosjekt Navigator, åpen Main.storyboard. I første scene, velger bryteren. I Verktøy-ruten til høyre, åpner Connections Inspector og, i Sendt Hendelser delen, dra fra Value Endret til den første visningen kontrolleren i dokument Outline. Fra hurtigmenyen som viser handlingene til visningen kontrolleren, velg healthIntegrationButtonSwitched :. Dette sikrer healthIntegrationButtonSwitched: metoden kalles når bryteren slås

for å koble til lese og skrive knapper er nesten identiske.. Klikk på Les-knappen, bare denne gangen, drar du fra Touch Up Inside hendelse til First View Controller. Velg readAgeButtonPressed: handling fra hurtigmenyen

Klikk på Skriv-knappen og dra fra Touch Up Inside hendelse til First View Controller, velg writeWeightButtonPressed:.. Metode fra lokalmenyen

Vi trenger nå å koble uttakene vi erklært til elementene i brukergrensesnittet. Trykk Kontroll og dra fra First View Controller til etiketten med de to spørsmålstegn. Fra pop-up menyen som heter Outlets, klikk på ageLabel. Dette vil koble uttaket til etiketten.

Gjenta disse trinnene for tekstfeltet, koble den til weightTextField utløpet av visningen kontrolleren.

3. Bygg og Kjør

Den første scenen skal nå være fullt funksjonell. Start programmet og slå av bryteren på. Du bør bli bedt med følgende HealthKit tillatelser brukergrensesnitt:

Sørg for å slå på begge bryterne før å trykke på Ferdig, ellers appen vil ikke ha tilgang til de dataene vi trenger i prøven app
.

Du kan nå prøve å trykke på Les knappen. Hvis du kjører programmet i iOS Simulator, sannsynligvis ingenting vil skje, fordi du ikke har satt en fødselsdato. Du kan gå over til Helse app i iOS Simulator og sett den.

  • Åpne Helse app.
  • kategorien Select Helse Data.
  • Klikk på Meg.

    Trykk på Rediger.

    Tap Fødsels og sette en dato. Pek på Fullført.

    Du kan nå gå tilbake til vår HealthBasics app og trykk på Les knappen igjen. Denne gangen din alder skal vises.

    Du kan også teste vekten deling. Velg vekt tekstfeltet og skriv inn en verdi i kilo. Når du trykker Skriv kursen tilbake til Helse app og i kategorien Helse data, velger kroppsmål og vekt. Prøven du nettopp har lagt skal være synlig.

    Så langt har du lært det grunnleggende for å arbeide med HealthKit.

  • hvordan å spørre brukeren om tillatelse

    hvordan å lese og skrive grunnleggende data

    hvordan å kapsle HealthKit relaterte kode i en atskilt klasse

    4. Legge til en Workout

    I den andre delen av vår prøve app, vil jeg vise deg hvordan du skriver en treningsøkt til HealthKit. Dette er nyttig hvis du bygger noen form for trening (løping, sykling, turgåing, etc.) app. Mesteparten av byggesteinene er like

    Trinn 1:. Utvide GSHealthKitManager Class

    Vi starter ved å utvide GSHealthKitManager klassen. Legg til følgende metode deklarasjonen GSHealthKitManager.h: Anmeldelser - (void) writeWorkoutDataFromModelObject: (id) workoutModelObject;

    Legg til en ny aksje typen til requestAuthorizationToShareTypes: readTypes: ferdigstillelse: metode ved å legge treningen typen til writeTypes matrise .
    NSArray * writeTypes = @ [[HKObjectType quantityTypeForIdentifier: HKQuantityTypeIdentifierBodyMass], [HKObjectType workoutType]];

    Til slutt legger writeWorkoutDataFromModelObject. metode nederst på GSHealthKitManager klasse Anmeldelser - (void) writeWorkoutDataFromModelObject :( id) workoutModelObject {//I en virkelig verden app, vil du passere i en modell objekt som representerer dine treningsdata, og du ville trekke de relevante data her og gi det til HealthKit treningen metoden. //For enkelhets skyld av dette eksempelet, vil vi bare sette vilkårlige data. NSDate * Startdato = [NSDate dato]; NSDate * Sluttdato = [Startdato dateByAddingTimeInterval: 60 * 60 * 2]; NSTimeInterval varighet = [ENDDATE timeIntervalSinceDate: Startdato]; CGFloat distanceInMeters = 57000 .; HKQuantity * distanceQuantity = [HKQuantity quantityWithUnit: [HKUnit meterUnit] doubleValue: (dobbel) distanceInMeters]; HKWorkout * treningen = [HKWorkout workoutWithActivityType: HKWorkoutActivityTypeRunning Startdato: Startdato Sluttdato: Sluttdato varighet: varighet totalEnergyBurned: nil totaldistanse: distanceQuantity metadata: null]; [self.healthStore saveObject: treningsøkt withCompletion: ^ (BOOL suksess, NSError * feil) {NSLog (@ "Lagre workout å healthStore - suksess:% @", suksess @ "JA":? @ "NO"); if (error = null) {NSLog (@ "feil:% @", feil); }}];}

    I min egen app, Routie, har jeg brukt tilnærming av bestått en modell objekt til writeWorkoutDataFromModelObject: metode, delegere de tunge løftene til lederen klassen. Sistnevnte trekker de nødvendige dataene fra modellen objektet og sender informasjonen til den HKHealthStore forekomsten. Jeg tror det er en god måte å holde HealthKit relaterte kode innesperret i manager klassen

    Gjennomføringen av writeWorkoutDataFromModelObject. Metoden er ganske grei. Det er bare tre trinn:


      Vi først klargjøre dataene. I dette eksempelet gjør vi tallene opp.
    1. Vi deretter opprette en HKWorkout objekt ved å påberope en av convenience initializers av klassen.
    2. Til slutt, vi redde HKWorkout objektet til HKHealthStore instans.

      Dette er første gang vi har jobbet med HKWorkout klassen så la meg kort presentere denne klassen. Den HealthKit rammeverket bruker HKWorkout klasse å spore aktiviteter. Økter er stort sett uforanderlig, så du må gi verdiene av treningen under initialisering.

      Når du initialiserer en treningsøkt, er du pålagt å gi en aktivitetstype, en startdato, og og sluttdato. Du kan eventuelt passere i total distanse, total energi brent, og metadata. Metadataene kan brukes til å tildele tilleggsinformasjon til trening. Dette er veldig nyttig når du ønsker å dele mer informasjon om en trening med et annet program som du også opprettet

      Trinn 2:. Implementere writeWorkoutButtonPressed: Handling

      Åpne SecondViewController.m og tilsett Følgende import til toppen av filen:
      #import "GSHealthKitManager.h"

      Deretter implementere writeWorkoutButtonPressed: metode som vist nedenfor Anmeldelser - (IBAction) writeWorkoutButtonPressed:. (id) avsender {//I en virkelig verden app, vil du få henvisning til en relevant modell objekt og gi det til følgende metode. [[GSHealthKitManager sharedManager] requestAuthorization]; [[GSHealthKitManager sharedManager] writeWorkoutDataFromModelObject: null];}
      Trinn 3: Opprette Workout brukergrensesnitt

      Vi vil bare legge til en enkelt knapp til den andre scenen av appen skrive treningen. Åpne Main.storyboard og fokusere på den andre scenen. Slett etikettene som er i den andre View Controller.

      Legg til en knapp i midten av visningen kontrolleren syn og sette sin tittel til Skriv Workout. Koble sin Touch Up Inside hendelse til writeWorkoutButtonPressed: action vi implementert i forrige trinn

      5.. Testing

      Bygg og kjøre programmet, og sette Helse integrasjon bryteren. Helse Tilgang skjermen vil bli presentert med den nylig bedt treningen typen slått av. Slå den på og på Ferdig. Dette er bare nødvendig, fordi vi har lagt treningen aksje typen til listen av aksjetyper. Dette betyr at vi trenger å spørre brukeren om tillatelse før vi bruker den.

      Åpne andre fanen nederst og trykk Write Workout. Hvis alt gikk riktig, bør du se følgende melding i Xcode er Console:
      Lagre workout å healthStore - suksess: JA

      Nå kan du bytte til Helse app og gå til Helse data > Fitness > Treningsøkter. Det skal du se treningen som nettopp ble lagt til.

      Konklusjon

      I denne opplæringen, har jeg vist deg hvordan du kan skrive en treningsøkt til HealthKit. Jeg har også vist deg hvordan å skille HealthKit relaterte kode ved å sende en modell objekt til metoden som skriver treningen til HealthKit.

      Jeg håper du har hatt glede av denne opplæringen, og at du har lært alle grunnleggende du trenger å gå ut der og integrere din egen app med HealthKit. Jeg håper også at jeg har overbevist deg å gi HealthKit en prøve.

      La meg beskjed i kommentarfeltet hvordan du likte denne opplæringen, eller om noe var uklart. Du kan også finne meg på Twitter

      Lenker

      Listen nedenfor inneholder en rekke relevante linker slik at du raskt kan hoppe til det du trenger:.

    3. Apples HealthKit Work Referanse: Jeg anbefaler å lese den

      Fit: lagre og hente HealthKit Data: sample HealthKit applikasjon fra Apple

      App Store-anmeldelse retningslinjer - HealthKit:. avsnittet i App Store anmeldelse Retningslinjer dekker HealthKit

      Vi presenterer HealthKit (WWDC 2014 Session Videoer)

      Hva er nytt i HealthKit (WWDC 2015 Session videoer)



      Next Page: