En introduksjon til Handoff

An Introduksjon til handoff
18
Del
9
Del
Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert å bare $ 3. Ikke gå glipp av.

Innledning

Med iOS 8 og OS X Yosemite, introduserte Apple en ny funksjon for utviklere å dra nytte av, handoff. Overlevering innebærer at appen kan overføre data og søknad tilstandsinformasjon fra en enhet til en annen over Bluetooth. Dette gjør at brukerne av apps å begynne en oppgave på en av sine enheter, og deretter fortsette det sømløst på en annen.

Et eksempel på dette ville være begynner å skrive en melding på iPhone og deretter etterbehandling og sende det samme melding på din iPad. I denne opplæringen, skal jeg vise deg hvordan du kan ta i bruk omruting dine egne applikasjoner gjennom en veldig enkel notatskriving app.

Denne opplæringen forutsetter at du kjører Xcode 6+ og ha to overlevering kompatible enheter. Ikke alle iOS 8 enheter har Bluetooth LE (Low Energy), som er nødvendig for handoff. Denne funksjonen er derfor kun tilgjengelig-og kan bare bli testet på følgende enheter:

iPhone 5 og senere

iPad 4. generasjon, inkludert alle iPad Air modell
< li> iPad Mini

iPod Touch 5. generasjon

Under testing, må du logge på den samme iCloud-konto på hver enhet og aktivere omruting enhetens innstillinger. Anmeldelser
1. Prosjektet Setup

Opprett et nytt prosjekt i Xcode og velge Enkel visning Application mal fra iOS > Søknad delen.

Konfigurer prosjektet som vist nedenfor. Legg merke til at språket er satt til Swift og enheter er satt til Universal

Når Xcode skapte prosjektet ditt, åpne ViewController.swift og erstatte gjennomføringen av ViewController klassen med følgende gjennomføringen.
Klasse ViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate {var noteTitleField: UITextField! Var noteContentView: UITextView! styre func viewDidAppear (animert: Bool) {self.noteTitleField = UITextField (ramme: CGRect (x: 12, y: 28, bredde: self.view.frame.width - 22, høyde: 20)) self.noteTitleField.placeholder = "Note Title" self.noteTitleField.delegate = selv self.noteContentView = UITextView (ramme: CGRect (x: 8, y: 56, bredde: self.view.frame.width - 16, høyde: self.view.frame.height - 64)) self.noteContentView.text = "Merk Innhold" self.noteContentView.delegate = selv self.view.addSubview (self.noteTitleField) self.view.addSubview (self.noteContentView)} func textViewDidBeginEditing (textView: UITextView) { hvis textView.text == "Note innhold" {textView.text = ""}} ride func viewDidLoad () {super.viewDidLoad () //Gjør noe ekstra oppsett etter lasting utsikten, vanligvis fra en spiss. }}

Gjennomføringen er ganske grei. Det gjør ViewController klassen vedta både UITextFieldDelegate og UITextViewDelegate protokoller, og det legger en UITextField og UITextView til visningen kontrolleren syn for skriving.

Bygg og kjøre programmet på en av test enheter, og du bør se en svært grunnleggende brukergrensesnitt med to input felt, et tekstfelt for en tittel og tekst visning for notatet innhold.

2. Sette opp handoff

Aktiviteter overføres mellom enheter med handoff er modellert av NSUserActivity klassen. Du vil lære mer om denne klassen, og hvordan den skal brukes senere i denne opplæringen. Først må programmet være konfigurert for å kunne lage disse aktivitetene.

Hver type aktivitet dine app støtter må gis en unik identifikator, ligner på hvordan hver iOS applikasjon har sin egen unike id. Disse identifikatorer kan bli hva du vil, men det beste er å bruke omvendt DNS notasjon, slik som com.tutsplus.handoff-introduction.note. Forekomsten av programmet som kjører på hver enhet må også undertegnes av den samme iOS utvikling team for at aktiviteter for å bli gjenkjent på riktig måte.

Du må først legge aktivitets identifikatorer at appen støtter til målets Info.plist. Åpne målets Info.plist og tilsett NSUserActivityTypes nøkkelen. Gjør dette elementet en Array og legge til en enkelt element, com.tutsplus.handoff-introduction.note, som vist i skjermbildet nedenfor.

Deretter velger du prosjektet i prosjekt Navigator og, i editoren på høyre, åpne kategorien Generelt. I Identitet, angi teamet til riktig iOS utviklingsteamet.

Med disse trinnene fullført, forutsatt at du er logget på samme iCloud-konto og koblet til samme Wi-Fi-nettverk på hver av testeapparater , er søknaden din klar til å begynne å bruke handoff.

3. Sende en Bruker aktivitet

Deretter må du legge til noen kode for at brukeraktivitet som skal sendes fra en enhet til en annen. Oppdatere viewDidLoad metoden i ViewController klassen som vist nedenfor
styre func viewDidLoad () {super.viewDidLoad () la aktivitet = NSUserActivity (activityType: "com.tutsplus.handoff-introduction.note"). Activity.title = " Note "activity.userInfo = [" title ":" "," innhold ":" "]? userActivity = aktivitet userActivity .becomeCurrent ()}

Dette skaper en grunnleggende NSUserActivity objekt med identifikator du lagt til målets Info. plist tidligere. Du gir denne aktiviteten innvende en tittel og en Userinfo ordbok med tom strengverdier for tittelen og innholds nøkler.

I denne opplæringen, skal vi være å sette strenger i vår aktivitet er userinfo ordbok. Men du kan legge til noen eiendom listetype, for eksempel tall, matriser, og ordbøker, samt eventuelle NSCoding kompatibel objekt.

Du kan deretter tildele denne nye aktiviteten til userActivity eiendom din ViewController forekomsten slik at overlevering API har en referanse til den. Den UIViewController klassen arver denne egenskapen fra UIResponder klassen.

Til slutt, kaller du becomeCurrent på aktiviteten objektet for å fortelle systemet at dette er den aktuelle brukeraktivitet for å bli sendt ut av programmet.

Du har nå satt opp din brukeraktivitet med hell, men vi trenger også å fylle det med noe innhold som brukeren skriver sitt notat. For å gjøre dette, vi oppdaterer den aktuelle brukerens aktivitet ved å overstyre updateUserActivityState (_ :) metoden i ViewController klassen. Denne metoden kalles periodisk ved overlever API for å oppdatere gjeldende brukeraktivitet. Legg til følgende kode i ViewController klassen
styre func updateUserActivityState (aktivitet: NSUserActivity). {Activity.addUserInfoEntriesFromDictionary (["title": self.noteTitleField.text, "innhold": self.noteContentView.text]) super.updateUserActivityState (aktivitet)} func tekstfeltet (Textfield: UITextField, shouldChangeCharactersInRange Område: NSRange, replacementString streng: String) - > Bool {(! UserActivity) self.updateUserActivityState return true} func textView (textView: UITextView, shouldChangeTextInRange Område: NSRange, replacementText tekst: String) - > Bool {self.updateUserActivityState (userActivity!) Return true}

updateUserActivityState (_ :) metoden gir oss en referanse til den aktuelle brukerens aktivitet, og det erstatter verdiene i virksomhetens Userinfo ordliste med de nyeste verdier fra din app. Merk at vi også benytter denne metoden på super

Vi har også gjennomført to andre metoder, Textfield (_:. ShouldChangeCharactersInRange: replacementString :) av UITextFieldDelegate protokollen og textView (_: shouldChangeTextInRange: replacementText :) av UITextViewDelegate protokoll. I disse metodene, vi oppdaterer den aktuelle brukerens aktivitet når teksten i noen av input felt endringer. Selv om dette ikke er nødvendig, sikrer dette at aktiviteten vil alltid inneholde den nyeste informasjonen.

Du er nå klar til å teste ut din app med handoff. Bygge og drive din app på begge test enheter. Trykk på låseknappen på én enhet for å sette enheten i dvale mens du holder app åpen på den andre. Våkn opp enheten du bare låst, og du bør se app-ikonet vises i nedre venstre hjørne av låseskjermen. Utfør en sveip gest på dette ikonet og programmet vil fortsette via handoff.

Alternativt kan du dobbeltklikke på hjem-knappen for å gå inn i app switcher og din handoff app stand vil dukke opp på venstre side av hjemmet skjerm. For øyeblikket appen bare fortsetter i samme tomt grensesnitt. La oss fikse det nå.

4. Gjenopprette fra en brukers aktivitet

Gjenopprette en applikasjon fra en omruting NSUserActivity håndteres av din søknad delegat. Appen delegat deretter sender brukerens aktivitet objektet til roten view controller programmets å gjenopprette seg selv. Hvis visningen kontrolleren som må behandle aktiviteten er ikke roten visning kontrolleren av søknaden din, kan du bare gi det fra roten visningen kontrolleren ned til visningen kontrolleren hierarkiet til du kommer til ønsket sted i programmet ditt. Anmeldelser

Åpne AppDelegate.swift og legge til følgende metode til AppDelegate Klasse:
func program (applikasjon: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]) - > Void) - > Bool {self.window? .rootViewController? .restoreUserActivityState (UserActivity) return true}

I denne metoden, passerer du brukeraktivitet objektet til roten view controller programmets og ved å returnere sant, fortelle deg programmet som du har lykkes mottatt og behandlet overleveringsbrukeraktivitet

Deretter åpner ViewController.swift og legge til følgende metode til ViewController klassen.
styre func restoreUserActivityState (aktivitet: NSUserActivity) {self.noteTitleField.text = aktivitet. Userinfo? ["title"] as! String self.noteContentView.text = activity.userInfo? ["Innhold"] as! String}

I likhet med updateUserActivityState (_ :) metoden fra tidligere i denne opplæringen, overstyrer du den restoreUserActivityState (_ :) metode for å hente informasjon fra NSUserActivity objekt. I implementeringen av denne metoden, oppdatere dere begge av dere innspill felt med data som er lagret på brukerens aktivitet objektet.

Bygg og kjøre programmet på begge test enheter og begynne å skrive et notat på én enhet. Enten fra låseskjermen eller app switcher på den andre enheten, åpner app via handoff og du skal se teksten du hadde skrevet på den første enheten på andre.

5. Feilhåndtering og Delegat Metoder

I motsetning til mange APIer som tilbys av Apple for iOS, er feilbehandling ikke lett når du bruker handoff hvis du ikke vet hvor disse feilene må håndteres. Det første punktet der din app vil bli varslet om en omruting feil er via programmet (_: didFailToContinueUserActivityWithType: error :) i app representanten klassen. I denne metoden kan du finne ut hva årsaken til feilen var og hva slags aktivitet feilen gjelder. Legg merke til at type en NSUserActivity objekt er den samme som den unike identifikator du tilordne den.

Når programmet fortsetter fra en omruting aktivitet, først må den laste ned data knyttet til aktivitet fra den opprinnelige enheten over Blåtann. Før denne nedlastingen er fullført skjønt, er et annet program delegat metode som kalles: application (_: willContinueUserActivityWithType :). I denne valgfrie metoden, kan du returnere en boolsk verdi å fortelle overleverings API hvorvidt du ønsker å fortsette å motta den brukeraktivitet. I noen situasjoner kan dette være nyttig som du kan deaktivere en bestemt type NSUserActivity når visse vilkår er oppfylt.

Konklusjon

I denne opplæringen, viste jeg deg hvordan du kan bruke den NSUserActivity klasse for enkelt å vedta omruting dine egne iOS 8 programmer. Du opprettet en veldig enkelt program, i stand til å overføre data trådløst til en annen enhet via Bluetooth.

Mens eksempel søknaden vi gikk gjennom i denne opplæringen var veldig enkelt, kan dine egne programmer har så mange typer brukeraktivitet som du ønsker for et bredt spekter av funksjonalitet. Som alltid, hvis du har noen kommentarer eller spørsmål, la dem i kommentarfeltet nedenfor.



Previous:
Next Page: