Har du en idé om en app, men mangler programmeringskunnskapen til å begynne å bygge den? I denne ukentlige bloggserien tar jeg deg, ikke-programmereren, steg for steg gjennom prosessen med å lage apper for iPhone, iPod touch og iPad. Bli med meg hver uke på dette eventyret, og du vil oppleve hvor gøy det kan være å gjøre ideene dine til virkelighet! Dette er del 37 av serien. Hvis du akkurat har begynt, sjekk ut begynnelsen av serien her .
De siste innleggene mine tok litt sidespor da jeg dekket appsworld 2014. I dette innlegget kommer jeg tilbake på sporet og snakker om et annet alternativ for å outsource iOS-appens nettbehandling, meldingstjenester og datalagring—Amazon Web Services (AWS).
Amazon tilbyr et bredt utvalg av tjenester, men i dette innlegget vil jeg fokusere på deres AWS Persistence Framework for Core Data som lar deg bruke Amazons skydatabase som en backend for Apples Core Data Framework !
Den dårlige delen med Amazon Web Services er dokumentasjonen deres. Det er seriøst utdatert. Hvis du følger Amazons nyeste dokumentasjon for å sette opp webtjenester for iOS, vil du ende opp frustrert (som jeg gjorde, da jeg skrev dette innlegget). Hvis jeg hører tilbake fra Amazon om en oppdatering av dokumentene deres, vil jeg revidere uttalelsene mine her. Personlig føler jeg at dette er et reelt forretningsproblem for Amazon, ettersom de prøver å lokke iOS-utviklere til plattformen deres! Når det er sagt, har jeg lagt til nok informasjon i dette innlegget til at du skal kunne komme i gang.
AWS Persistence Framework for kjernedata
AWS Persistence Framework for Core Data er en ganske stor sak, fordi det gjør det enkelt for iOS-utviklere å flytte til AWS-plattformen.
Bortsett fra litt ekstra oppsettskode, kan du bruke ut-av-boksen iOS Core Data-objekter og enhetsdatamodell i appene dine, akkurat som du vanligvis gjør med lokale data. Som vist i Figur 1 , snakker den vedvarende butikkkoordinatoren med AWSDynamoDBIncrementalStore objekt bak kulissene, som kommuniserer med AWS DynamoDB-databasen for å hente og oppdatere appens enheter.
![]() |
Figur 1 - AWS Persistence Framework lar deg bruke de ferdige kjernedataobjektene. |
DynamoDB er Amazons NoSQL databasetjeneste som gir rask datatilgang (den kjører på solid state-harddisker) som skaleres etter hvert som antall appbrukere øker. Vi skal se nærmere på hvordan disse objektene fungerer sammen senere i dette innlegget. For å finne ut mer om Amazon DynamoDB, sjekk ut denne lenken .
Registrere deg for en gratis Amazon Web Services-konto
Amazon tilbyr et gratis bruksnivå, som lar deg få litt praktisk erfaring med AWS. For å finne ut alle tjenestene som tilbys av Amazon, samt alt du kan gjøre gratis, sjekk ut denne lenken .
Men før du kan få tilgang til noen av de gratis AWS-tjenestene, må du opprette en gratis konto. For å gjøre dette, naviger til denne nettside for mobilapper . Nær toppen av siden finner du en Kom i gang gratis knapp ( Figur 2 ).
![]() |
Figur 2 - Du kan opprette en gratis konto for mobilappene dine på AWS. |
Når du klikker på denne knappen, blir du bedt om å enten bruke en eksisterende Amazon.com-konto eller opprette en ny konto. Du må oppgi kredittkortinformasjon selv om du kun planlegger å bruke gratistjenestene. Etter å ha angitt kredittkortinformasjonen din, blir du bedt om å angi et telefonnummer du kan nås på. Etter at du har tastet inn telefonnummeret ditt, vises en firesifret kode i nettleseren din. Du vil motta en telefonsamtale fra Amazon som ber deg om å skrive inn den firesifrede koden for å fortsette registreringsprosessen.
Deretter vises en støtteplan-nettside ( Figur 3 ) som lar deg velge støtteplanen for AWS-tjenestene dine. Den første på listen er Basic, eller gratis støtte.
![]() |
Figur 3 - Amazon Web Services-støtteplanene |
Når du er ferdig med å registrere deg, naviger til AWS-kontokonsoll ( Figur 4 ) og se en liste over tjenestene som er tilgjengelige for deg .
![]() |
Figur 4 - Amazon Web Services-konsoll |
Laster ned AWS SDK for iOS
Så hvordan integrerer du Amazon Web Services med iOS-appen din? Amazon Web Services SDK for iOS gir et sett med rammer du kan legge til iOS-prosjektet ditt slik at du kan få tilgang til Amazons tjenester fra appene dine. For å laste ned AWS SDK for iOS, gå til denne lenken , som tar deg til nettsiden vist i Figur 5 .
![]() |
Figur 5 - Amazon Web Services SDK for iOS |
Klikk på AWS SDK for iOS knappen, som laster ned aws-ios-sdk-1.7.1.zip fil til din Nedlastinger mappe.
Laster ned AWS SDK iOS-eksempler
Amazon gir flere eksempler som viser hvordan du får tilgang til en rekke AWS-teknologier fra iOS-appene dine. For eksempel, hvis du vil se et prosjekt som ligner på Google App Engine iOS-eksempelappen, bør du sjekke ut SNS_SQS_MessageBoard prøve. I dette innlegget skal jeg fokusere på AWSPersistence_Locations2 eksempelapp fordi den demonstrerer hvordan du bruker AWS Persistence Framework for Core Data.
Hvis du vil følge trinn-for-trinn-instruksjonene i de følgende delene, må du laste ned disse eksemplene fra GitHub på denne lenken .
Forstå Token-automater
Hvis appen din ringer til Amazon Web Services, må alle som bruker appen din ha legitimasjon for å få tilgang til AWS. Det finnes en rekke teknikker for å oppnå dette, det verste alternativet er å bygge inn din egen personlige Amazon-legitimasjon i appen din. Dette har 'hack me' skrevet over det hele.
Heldigvis har Amazon et alternativ kalt a Token salgsautomat (TVM) som lar appen din få anonym, midlertidig legitimasjon for brukerne dine bak kulissene. Faktisk, for å kjøre Core Data-eksempelappen, må du først sette opp en Token Vending Machine som beskrevet i de følgende trinnene.
Trinn 1: Last ned Token Vending Machine Sample App
Navigere til denne lenken og klikk på nedlasting knappen mot toppen av siden. Dette laster ned en zip-fil til datamaskinen din som utvides for å lage en Anonym TVM undermappe i din Nedlastinger mappe.
Dette er Amazons Token Vending Machine-eksempelapplikasjon, som du vil installere på AWS skyservere om en liten stund.
Trinn 2: Opprett en ny bruker for Token-automaten
Deretter må du legge til en ny bruker til AWS-kontoen din som kun skal brukes til Token-automaten. Alle som kjører appen din vil bruke denne dedikerte TVM-brukeren, men vil hente forskjellige anonyme legitimasjoner for denne dedikerte brukeren. Dette lar deg kontrollere tillatelsene og rettighetene til alle brukere på ett sted.
Følg disse trinnene for å legge til en ny bruker for Token-automaten:
- Navigere til denne lenken og logg på hvis du blir bedt om det.
- På venstre side av siden ( Figur 6 ), å velge Brukere , og klikk deretter øverst på siden Opprett nye brukere knapp.
![]() |
Figur 6 - Velg Brukere til venstre, og klikk deretter på Opprett nye brukere knapp. |
- I dialogboksen Opprett bruker under Skriv inn brukernavn , skriv inn navnet på brukeren du vil opprette ( Figur 7 ). Jeg anbefaler noe beskrivende, som f.eks TVMUser .
![]() |
Figur 7 - Opprette TVMUser |
- Sørg for at Generer en tilgangsnøkkel for hver bruker alternativet er valgt, og klikk deretter Skape .
- I dialogboksen som vises neste ( Figur 8 ), Klikk på Last ned legitimasjon knappen for å laste ned brukerlegitimasjonen til datamaskinen din.
![]() |
Figur 8 - Nedlasting av brukersikkerhetslegitimasjonen |
- Etter at legitimasjonen er lastet ned, klikk Lukk vindu , og du bør se den nye brukeren i brukerkonsollen.
- Klikk i avmerkingsboksen til venstre for den nye brukeren, klikk på Tillatelser fanen, og klikk deretter på Legg ved brukerpolicy knapp ( Figur 9 ).
![]() |
Figur 9 - Legge ved brukerpolicyen |
- I dialogboksen Administrer brukertillatelser klikker du Egendefinerte retningslinjer , og klikk deretter på Å velge knapp ( Figur 10 ).
![]() |
Figur 10 - Sette en egendefinert policy |
- I dialogboksen Angi tillatelser angir du Policynavn til noe beskrivende, som f.eks TVMP-politikk ( Figur 11 ).
![]() |
Figur 11 - Angi brukertillatelser |
- Deretter kopierer du følgende policyerklæring og limer den inn i Politikkdokument eske:
{ "Statement": [ { "Effect": "Allow", "Action": "sts:GetFederationToken", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:GetUser", "Resource": "*" }, { "Effect": "Allow", "Action": "sdb:*", "Resource": "*" }, { "Effect":"Allow", "Action":"dynamodb:*", "Resource":"*" }, { "Effect": "Allow", "Action": "sqs:*", "Resource": "*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "*" }, { "Action": "sns:*", "Effect": "Allow", "Resource": "*" } ] }Som Amazon bemerker i sin dokumentasjon , disse innstillingene er ment for eksempelapplikasjonene, og bør endres for å begrense tilgangen til tjenester du ikke trenger i dine egne apper.
- Klikk på Bruk retningslinjer knapp.
Trinn 3: Installer Token-automaten ved å bruke AWS Elastic Beanstalk
Nå er du klar til å installere nettapplikasjonen Token Vending Machine. For å gjøre dette, skal du bruke et verktøy som heter AWS elastisk bønnestengel som Amazon tilbyr for å distribuere og administrere applikasjoner i AWS-skyen.
- Naviger til Elastic Beanstalk-applikasjonen side .
- Øverst på siden klikker du på Opprett ny applikasjon lenke ( Figur 12 ).
![]() |
Figur 12 - Opprette en ny applikasjon med AWS Elastic Beanstalk |
- I Søknadsinformasjon side, skriv inn en Programnavn (for eksempel, Anonym TVM ) og eventuelt en Beskrivelse ( Figur 13 ), og klikk deretter på Skape knapp.
![]() |
Figur 13 - Spesifiser Programnavn og eventuelt, a Beskrivelse . |
- På miljøtype-siden ( Figur 14 ), sett Miljønivå til Internett server , Forhåndsdefinert konfigurasjon til Tomcat , og Miljøtype til Lastbalansering, autoskalering og klikk deretter på Fortsette knapp.
![]() |
Figur 14 - Sette opp miljøtypen |
- På applikasjonsversjon-siden ( Figur 15 ), å velge Last opp din egen , og klikk deretter på Velg Fil knapp.
![]() |
Figur 15 - Velge en kilde for applikasjonen din |
- Naviger til Mac-en din Nedlastinger mappen, utvider du Anonym TVM mappen, velg AnonymTVM.krig fil, og klikk deretter Velge . Etterpå klikker du på Fortsette knapp. Du vil se en aktivitetsindikator vises (roterende sirkulære piler) i noen minutter.
WAR filtypen står for ( I eb søknad MED gressløk) og er JAR ( J ava MED chive) fil som brukes til å distribuere en samling filer som består av en Java-nettapplikasjon.
- På miljøinformasjonssiden ( Figur 16 ), skriv inn en Miljønavn . Merk at dette må være unikt. Jeg anbefaler å plassere bedriftens nettadresse som et prefiks for å sikre unikhet. Dette setter automatisk Miljø-URL verdi, og du kan eventuelt angi en Beskrivelse . Du kan klikke på Sjekk tilgjengelighet knappen for å sikre at nettadressen din er unik. Etterpå, klikk Fortsette .
![]() |
Figur 16 - Spesifisering av miljøinformasjon |
- På siden for tilleggsressurser ( Figur 17 ), la begge avmerkingsboksene stå tomme, og klikk deretter på Fortsette knapp.
![]() |
Figur 17 - Spesifisering av tilleggsressurser |
- I Konfigurasjonsdetaljer side ( Figur 18 ), sett Forekomsttype til t1.micro . Du kan eventuelt legge inn en Epostadresse for å bli varslet om eventuelle større endringer i miljøet ditt. La de andre boksene stå med standardverdiene og klikk Fortsette .
![]() |
Figur 18 - Spesifisering av konfigurasjonsdetaljer |
- En vurderingsside vises nå som viser deg alle valgene dine. Klikk på Skape knapp. Etter flere minutter vil du se en grønn sirkel som inneholder en hvit hake som indikerer at installasjonen var vellykket ( Figur 19 ).
![]() |
Figur 19 - Installasjonen av Token Vending Machine-webappen er fullført. |
Eksempelappene dine for Token Vending Machine kjører nå på AWS-skyen!
Trinn 4: Konfigurer Token-automaten
Nå må du knytte tilgangsnøkkelen og den hemmelige nøkkelen til TVM-brukeren du opprettet tidligere med den nylig installerte TVM-appen.
- Gå til Elastisk bønnestengel-side og klikk på din Anonym TVM applikasjon.
- På venstre side av Anonymous TVM-nettsiden ( Figur 20 ), å velge Konfigurasjon , og deretter i overskriften på Programvarekonfigurasjon klikker du på tannhjulet.
![]() |
Figur 20 - Konfigurere Token-automaten |
- Rull ned til delen for miljøegenskaper ( Figur 21 ) og still inn AWS_ACCESS_KEY_ID og AWS_SECRET_KEY egenskaper til verdiene som ble generert for brukeren du opprettet i Trinn 2: Opprett en ny bruker for TVM . Husk at du lastet ned disse legitimasjonene til en fil som heter rootkey.csv.txt .
![]() |
Figur 21 - Spesifiser tilgangsnøkkelen og den hemmelige nøkkelen til Token Vending-brukeren |
- Etter å ha skrevet inn legitimasjonen, klikk Lagre .
Trinn 5: Kjøre prøveappen
Nå som Token Vending Machine-nettappen er oppe og går, er du klar til å kjøre iOS-eksempelappen. Du kan enten kjøre den i simulatoren eller på en faktisk iOS-enhet.
- Åpne Locations2.xcodeproj fil i Xcode, som finnes i AWSPersistence_Locations2 undermappe av aws-sdk-ios-samples-master mappen som du lastet ned tidligere i dette innlegget.
- I Xcodes Project Navigator utvider du Klasser gruppe og klikk på Konstanter.h fil for å velge den. Endre TOKEN_VENDING_MACHINE_URL til url-en til Token Vending Machine-applikasjonen du installerte i delen Trinn 3: Installer Token-automaten ved å bruke AWS Elastic Beanstalk .
- Nå må du legge til AWS SDK for iOS Frameworks til prøveprosjektet. For å gjøre dette, høyreklikk i Project Navigator Rammer gruppe og velg i hurtigmenyen Legg til filer på plasseringer2 . Naviger til stedet der du lastet ned og utvidet AWS SDK for iOS, velg følgende rammeverk, og klikk deretter Legge til :
- AWSRuntime.framework
- AWSDynamoDB.framework
- AWSPersistence.framework
- Nå er du klar til å kjøre appen. Klikk på Xcode's Løpe -knappen, og når appen vises i simulatoren skal du se den tomme tabellvisningen vist i Figur 22 .
![]() |
Figur 22 - Den Steder 2 app på kjøretid |
- For å legge til en ny plassering i listen, klikk på handlingsknappen på venstre side av navigasjonslinjen. Dette viser alternativene vist i Figur 23 .
![]() |
Figur 23 - Plasseringsalternativer |
- Klikk på Legge til alternativet, deretter i dialogboksen Ny plassering ( Figur 23 ), Tast inn Apples hovedkvarter (dette er standardplasseringen i simulatoren), eller hvis du kjører den på en iOS-enhet, skriv inn en beskrivelse av gjeldende posisjon og klikk Ferdig .
![]() |
Figur 24 - Legg til en ny plassering. |
Dette viser det nylig lagrede elementet i Steder liste ( Figur 25 ). Merk at dette bare legger til den nye plasseringen lokalt på simulatoren eller iOS-enheten! Du må ta et ekstra skritt for å lagre det i DyanmoDB-databasen som er vert på AWS.
![]() |
Figur 25 - Den nye plasseringen lagres lokalt. |
- For å lagre den nye plasseringen til DynamoDB-databasen som er vert for Amazon Web Services, klikk på handlingsknappen igjen, og denne gangen velger du Lagre fra listen over alternativer. Dette viser SUKSESS melding vist i Figur 26 .
![]() |
Figur 26 - Den nye plasseringen lagres eksternt. |
- For å se en liste over innsjekkinger knyttet til stedet, klikk på plasseringen i listen og appen vil navigere til listen over innsjekkinger ( Figur 27 ).
![]() |
Figur 27 - Listen over innsjekkinger |
- For å legge til en ny innsjekking for gjeldende plassering, klikk på Legg til ny... rad i tabellvisningen. I Innsjekkingskommentar popup ( Figur 28 ), skriv inn en kommentar, og klikk deretter Ferdig , som legger til den nye innsjekkingen i listen.
![]() |
Figur 28 - Legg til en ny innsjekking |
- Du kan redigere listen over innsjekkinger eller listen over steder ved å klikke på Rediger-knappen på begge skjermene. Dette setter den tilsvarende listen i redigeringsmodus, som lar deg slette elementer i listen ( Figur 29 ).
![]() |
Figur 29 - Redigere listen over innsjekkinger |
Ta en nærmere titt på Locations2-eksempelprosjektet
- I Xcodes Project Navigator utvider du Ressurser gruppe og klikk på Model.xcdatamodeld fil for å vise den i designoverflaten. Som du kan se i Figur 30 , det er en plassering enhet og Sjekker inn enhet. Som du kanskje forventer, er det et To-Mange-forhold fra plassering til Sjekker inn enhet. Dette er standard kjernedatateknologi.
![]() |
Figur 30 - Entitetsdatamodellen |
- Legg deretter merke til plassering og Sjekker inn klassefiler i Ressurs gruppe som er generert fra enhetene på datamodellen. Velg overskriftsfilen for hver av disse og legg merke til at det ikke er noen skalarverdiegenskaper. Det er en begrensning av AWS Persistence Framework for Core Data at enhetsegenskaper ikke kan være skalære verdier.
- I prosjektnavigatoren klikker du på AppDelegate.h fil og du kan se managedObjectModel , managedObjectContext , og persistentStoreCoordinator egenskaper som er kjent i prosjekter som bruker kjernedata ( Figur 31 ).
![]() |
Figur 31 - Standard kjernedataegenskaper |
- For å se hva som skjer når appen starter opp, i Project Navigator, velg AppDelegate.m fil, og sjekk ut application:didFinishLaunching:withOptions: metode, som kjøres etter at appen er initialisert, men før den første skjermen vises. Figur 32 inneholder et sekvensdiagram som gir en oversikt over oppretting og oppsett av de kjernedatarelaterte objektene som forekommer i denne metoden.
![]() |
Figur 32 - Oppstartssekvensdiagram |
Som du kan se i sekvensdiagrammet, opprettes de vanlige kjernedataobjektene, men legg merke til i trinn 2, en registerStoreClass melding sendes til NSPersistentStoreCoordinator klasse, bestått AWSPersistenceDynamoDBIncrementalStore som klasse som skal registreres. Så i trinn 3, an addPersistentStoreWithType: melding sendes til persistentStoreCoordinator gjenstand. Disse to meldingskallene forteller Core Data å bruke AWS DynamoDB som datalager i stedet for en lokal SQLite-database.
Legg merke til i trinn 4 i sekvensdiagrammet at en referanse til managedObjectContext er lagret på CoreDataManager . La oss se nærmere på denne klassen.
- I prosjektnavigatoren under Klasser gruppe, velg CoreDataManager.h fil, og du vil se egenskaps- og metodeerklæringene vist i Figur 33 .
![]() |
Figur 33 - Den CoreDataManager header-fil |
Som du kan se, er CoreDataManager har en referanse til objektkonteksten og har ulike metoder som lar deg hente, opprette, slette og lagre plassering og Sjekker inn enhetsobjekter.
- Det er en annen viktig del av oppsettkoden du bør ta en titt på. I prosjektnavigatoren velger du AppDelegate.m fil og bla ned til persistentStoreCoordinator metode vist i Figur 34 .
![]() |
Figur 34 - Oppsettkoden for den vedvarende butikkkoordinatoren |
Denne koden forteller AWS Persistence Framework for Core Data tilordningene mellom enhetene dine og tabellene i databasen. For mer informasjon, sjekk ut Amazons dokumentasjon på denne lenken .
- La oss nå sjekke ut appens hovedvisningskontroller for å se hva som skjer når den første visningen vises. I prosjektnavigatoren velger du RootViewController.m fil. I den nederste halvdelen av viewDidLoad metode, vil du se koden vist i Figur 35 .
![]() |
Figur 35 - AWS Persistence Framework for oppsettkode for kjernedata |
Legg merke til referansene til dispatch_queue_t , dispatch_async , og så videre. Dette er litt mer avansert Objective-C-programmering som krever bruk av utsendelseskøer for å utføre forespørsler asynkront. Det er utenfor rammen av dette innlegget å detaljere detaljene ved denne koden, men du kan lære mer om utsendelseskøer på denne lenken .
- Sjekk ut kodelinjen der a oppsetttabeller melding sendes til Verktøy klasse. Dette er stedet hvor dine AWS DynamoDB-tabeller blir opprettet hvis de ikke allerede eksisterer. For mer informasjon om hvordan dette fungerer, sjekk ut oppsetttabeller metoden for Utilities.m klasse samt Amazons dokumentasjon på denne lenken .
Sjekk ut visningskontrolleren last fra CD metode for å se hvordan entiteter hentes fra bakenden. Sjekk ut lagre alt metode for å se hvordan enheter lagres, og angre metode for å se hvordan du kan angre endringer i enheter.
Begrensninger for AWS Persistence Framework for kjernedata
Det er en rekke begrensninger du bør være klar over når du bestemmer deg for å bruke AWS Persistence Framework for kjernedata eller ikke. Noen av disse er:
- Den støtter ikke versjoner av iOS før 5.0.
- Skalære verdier for enhetsegenskaper støttes ikke.
- Lagringsoperasjoner er ikke garantert å være transaksjonelle.
For en fullstendig liste over begrensninger, sjekk ut Begrensninger delen av Amazons dokumentasjon funnet på denne lenken .
Konklusjon
Amazon gjør det fristende for iOS-utviklere å hoppe på AWS-vognen ved å gjøre det relativt enkelt å gå over til skybasert datalagring. Til tross for begrensningene til AWS Persistence Framework for Core Data, vil du oppdage at mange iOS-apper fortsatt kan dra nytte av denne teknologien. Når det er sagt, hvis denne teknologien ikke passer dine behov, kan du alltid velge å få tilgang til Amazons DynamoDB direkte (i stedet for gjennom kjernedata) ved hjelp av DynamoDB API. For mer informasjon om dette alternativet, sjekk ut Amazons dokumentasjon på denne lenken .
<