iOS 8: Hvordan bygge en enkel handling Extension

iOS 8: Hvordan bygge en enkel handling Extension

36
Del
8
Del

Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

App-utvidelser ble introdusert under WWDC 14 som en måte å utvide funksjonaliteten til iOS apps til andre deler av systemet og for å gi bedre inter-app kommunikasjon.

For å nevne noen, kan du bruke en dag forlengelse for å lage en widget som vil dukke opp i Notification Center, en deling utvidelse som lar brukeren aksje til sine sosiale nettverk, eller en handling utvidelse som lar brukeren handle på dagens innholds- enten se det på en annen måte, eller endre det. I denne hands-on opplæringen, vil vi bygge en handling forlengelse fra scratch.

Selv om opplæringen krever ingen ytterligere kunnskap, anbefaler jeg at du tar en titt på noen ressurser hvis du hadde liker å lære mer om utvidelser etter å ha lest denne opplæringen.

WWDC Sessions Opprette Extensions for iOS og OS X, del 1 og 2

App Extension Programming Guide

1. Hva skal vi bygge?

Vi kommer til å bygge en enkel Handling utvidelse kalt "Les det". Utvidelsen vil akseptere tekst som input og vil lese teksten ved hjelp av talesyntese API av AVFoundation rammeverket. Jeg tror dette fungerer godt for opplæringen, fordi vi ikke innfører noen tredjeparts avhengig eller andre problemer.

Dette er hva utvidelsen vil se ut når den er ferdig. Du kan laste ned resultatet av denne opplæringen fra GitHub.

2. Opprette en handling Extension

Trinn 1: Prosjektoppsett

Start med å lansere Xcode 6.1 eller høyere, og opprette et nytt prosjekt. Velg Nytt > Prosjekt ... fra Xcode Fil-menyen og velg Enkel visning Søknad fra listen over maler.

Klikk på Neste og gi prosjektet et navn SampleActionExtensionApp. Skriv inn en Organisasjon Identifier og satt enheter til iPhone. Språket vi skal bruke for denne opplæringen er Objective-C

Trinn 2:. Legg Target

Når du har opprettet prosjektet, kan du legge et mål for handlingen forlengelse. Velg Nytt > Målrette ... fra Fil-menyen. I venstre rute, velger Application Extension fra iOS-delen, velg Handling forlengelse
, og klikk på Neste.

Sett Produktnavn til ReadItAction. Legg også merke til de andre alternativene, spesielt handlingstype. Jeg vil komme til at man i et minutt. Klikk Fullfør for å opprette Handling forlengelse.

Du vil nå bli spurt om du vil aktivere ReadItAction ordningen. Klikk på Avbryt, fordi vi skal installere Handling forlengelse ved å kjøre med app i stedet.

Action Typer

Det finnes to typer action extensions, en med et brukergrensesnitt og en uten en. Du lurer kanskje på hva fordelen er å ha en handling forlengelse uten et brukergrensesnitt så la meg forklare.

Action utvidelser uten brukergrensesnitt handle på det gjeldende elementet på en måte som endrer den. For eksempel kan en handling forlengelse fjerne røde øyne fra bildene, og det trenger ikke et brukergrensesnitt for å gjøre det. Den inneholder app har da en sjanse til å bruke den endret innhold, den forbedrede bildet i dette tilfellet.

Action utvidelser med et brukergrensesnitt kan være enten full skjerm eller presentert som en form ark. Malen Handling forlengelse target bruker hele skjermen presentasjon så det er det vi skal bruke

Trinn 3:. Implementere brukergrensesnitt

Nå som vi har grunnleggende satt opp, kan vi begynne å lage brukergrensesnittet. Vi begynner med inneholder app.

Klikk på Main.storyboard i SampleActionExtensionApp gruppen i prosjekt Navigator .
I den høyre ruten, velg Fil Inspector og fjern haken Bruk størrelsesklasser. Merk at hvis du var å skape en ekte app og du trenger for å støtte iPad, vil det sannsynligvis være en god idé å bruke størrelsesklasser.

Åpne objektbiblioteket og dra en tekstvisning og en verktøylinje på utsikt. Sett tekstvisning ramme til {x: 8, y: 20, bredde: 304, høyde: 288} i størrelse Inspektør til høyre. Som for verktøylinjen, setter rammen til {x: 0, y: 308, bredde: 320, høyde: 44} i Størrelse Inspector

Verktøylinjen inneholder én bar knapp.. Velg det, og, i Attributter Inspector, setter sin stil til Vanlig og dens Identifier til handling.

Som en siste touch, fjerne standard teksten i tekstvisning og erstatte den med "Trykk på funksjonstasten . påberope aktivitet view controller Deretter velger du "Les det action og denne teksten vil bli lest av vårt utvalg Handling extension"

Brukergrensesnittet på visningen kontrolleren skal nå skal se omtrent slik ut:.
< p> Selvfølgelig, vi kunne ha forlatt den inneholder app blank. Tross alt, bygger vi et utvalg app forlengelse slik app egentlig ikke trenger å gjøre noe. Men jeg ønsket å vise hvor enkelt det er å påberope aktiviteten kontrolleren fra innsiden din app og gi et punkt der andre Action utvidelser kan komme inn.

Når knappen på verktøylinjen tappes, er en aktivitet view controller presentert og vi vil være i stand til å påkalle vår Handling forlengelse innenfra der. En annen god grunn er at hvis du ønsket å publisere forlengelse på App Store, har det å være del av en ekte app og åpenbart app har å gjøre noe for at det skal bli godkjent.

Trinn 4 : Present aktivitet View Controller

Deretter må vi legge noen kode for å ViewController.m. Start med å skape et utløp for tekstvisning i visningen kontrollerens klasse forlengelse som vist nedenfor
interface ViewController ()property (nonatomic, svak) IBOutlet UITextView * textView;.end

Opprett en handling som heter actionButtonPressed i . som vi initialisere og presentere en UIActivityViewController forekomst og presentere det for brukeren Anmeldelser - (IBAction) actionButtonPressed: (id) avsender {UIActivityViewController * activityVC = [[UIActivityViewController Alloc] initWithActivityItems: @ [self.textView.text] applicationActivities: nil]; [selvtillit presentViewController: activityVC animerte: JA ferdigstillelse: null];}

Leder tilbake til Main.storyboard og koble tekst visning uttaket til tekstvisning ved å trykke Kontroll og dra fra View Controller objektet i View Controller Scene til tekstvisning, velger textView fra popover menyen.

Hvis du vil koble handlingen metoden, velg bar knappen på verktøylinjen og åpne tilkoblinger Inspector. Dra fra velger under Sendte handlinger, til View Controller objektet, velge actionButtonPressed:.. Fra popover menyen

Med app brukergrensesnitt klar og kablet opp, kan vi gå videre til å bygge Handling forlengelse

Trinn 5: Implementere User Interface

I prosjekt Navigator, utvide ReadItAction gruppen og klikk på MainInterface.storyboard. Du vil merke at dreieboken ikke er tom og allerede inneholder noen komponenter brukergrensesnitt. Vi vil bruke noen av dem, men vi trenger ikke bildevisningen. Velg bildevisningen og fjern den ved å trykke på Slett.

Åpne objektbiblioteket og legge en tekst visning under navigeringslinjen. Endre rammen til {x: 8, y: 72, bredde: 304, høyde: 300}. Til slutt, dobbeltklikker du på navigasjonslinjen tittel visningen og sette tittelen til "Tekstleser"

Trinn 6:. Implementere ActionViewController

Det er på tide å gjennomføre Handling forlengelse. I prosjekt Navigator, velger ActionViewController.m og gjøre følgende endringer.

Nedenfor import uttalelser legge en import regnskapet for AVFoundation rammeverk slik at vi kan utnytte talesyntese API i søksmålet forlengelse.
@ import AVFoundation;

I klassen forlengelse av ActionViewController klassen, fjerne bildeVis uttak og legge en for tekstvisning vi lagt tidligere
interface ActionViewController ()property (nonatomic, sterk) IBOutlet UITextView * textView.; end

Vi må også gjøre noen endringer i viewDidLoad metoden i ActionViewController klasse Anmeldelser - (void) viewDidLoad {[super viewDidLoad].; //Få varen [s] vi håndtering fra utvidelsen sammenheng. //I vår Handling forlengelse, vi trenger bare en inngang element (tekst), så vi bruker det første elementet fra tabellen. NSExtensionItem * element = self.extensionContext.inputItems [0]; NSItemProvider * itemProvider = item.attachments [0]; if ([itemProvider hasItemConformingToTypeIdentifier: (NSString *) kUTTypePlainText]) {//Det er en ren tekst! __weak UITextView * textView = self.textView; [itemProvider loadItemForTypeIdentifier: (NSString *) kUTTypePlainText alternativer: nil completionHandler: ^ (NSString * element, NSError * feil) {if (element) {[[NSOperationQueue mainQueue] addOperationWithBlock: ^ {[textView setText: element]; //Sett opp talesyntese og starte den AVSpeechSynthesizer * synthesizer = [[AVSpeechSynthesizer Alloc] init]; AVSpeechUtterance * ytring = [AVSpeechUtterance speechUtteranceWithString: textView.text]; [ytring setRate: 0,1]; [synthesizer speakUtterance: ytring]; }]; }}]; }}

Gjennomføringen er ganske lett å forstå. I viewDidLoad, får vi skrive inn tekst, tilordne den til tekstvisning, og lage en talesyntese objekt som vil lese det

Trinn 7:. Konfigurer Handling Extension

Selv om vi får nær, er det et par ting som vi fortsatt må ta vare på. Først må vi koble tekst visning i dreieboken til utløpet vi skapt et øyeblikk siden.

Åpne MainInterface.storyboard og koble tekst utsikt til bilde scene som vi gjorde i Main.storyboard et minutt siden

. Vi trenger også å spesifisere hvilke data typer handlings forlengelse støtter. I vårt tilfelle er det bare tekst. Utvid Støtte Files gruppen, og velg Info.plist. I Info.plist, navigere til NSExtension > NSExtensionAttributes > NSExtensionActivationRule. Endre NSExtensionActivationRule type fra String til ordliste.

Med ordboken utvidet, klikker du på + knappen ved siden av den. Dette vil legge et barn nøkkel. Sette navn til NSExtensionActivationSupportsText, sin type til boolsk, og verdien til YES. Dette sikrer at handlingen utvidelsen er bare synlig når det innførte elementer inneholder tekst.

Fortsatt i Info.plist, endre Bundle visningsnavn som skal lese den. Det ser bedre ut. Dette er hva den relaterte delen av Info.plist filen skal se ut:



Trinn 8

Som en siste finishen, og du kan legge til et ikon for Handling forlengelse. Velger du prosjektet i prosjekt Navigator og under mål, velge ReadItAction målet. Fra kategorien Generelt i App Ikoner og Launch delen bilder, trykk Bruk Asset Catalog siden av app ikoner Source. I teksten klikk Overfør. Naviger til eiendelen katalog og dra ikonet under til iPhone App iOS 7.8 60pt 2x sted.


Bygg og kjør programmet for å se om alt fungerer som forventet. Det er én ting om. Hvis lyden ikonet ikke vises på Handling forlengelse, må du sørge for at hoved Images.xcassets filen blir kopiert til forlengelse målet.

For å gjøre det, velger prosjektet i Project Navigator og velg den ReadItAction målet fra listen over mål. Åpne fanen Bygg Faser på toppen og utvide Kopier Bundle Resources fase. Hvis Images.xcassets filen er ikke i listen over ressursen, og klikk deretter på den lille plusstegnet for å legge den til i listen.

3. Kjør og Test

Kjør app for å prøve det ut. Nedenfor er to skjermbilder som viser utvidelsen i aksjon. Du kan også prøve å påkalle denne aktiviteten view controller fra Notes-applikasjonen og la vår forlengelse lese noen av notatene. Også prøve å åpne aktivitet ark i Bilder-programmet, vil du se at vår utvidelsen ikke er oppført, som er akkurat det vi forventer basert på aktiverings reglene vi har satt.

Konklusjon
< p> I denne opplæringen, lært deg hvordan å bygge en enkel Handling forlengelse. Vi dekket også det grunnleggende ved hjelp av talesyntese API av AVFoundation rammeverket. Hvis du er interessert i å lage andre utvidelser, så sjekk ut noen andre tutorials på Tuts +, som Cesar TESSARIN tutorial på å lage en dag forlengelse.

Hvis du har kommentarer eller spørsmål, kan du legge igjen en kommentar i kommentarfeltet nedenfor eller kontakte meg på Twitter.