Tens una idea per a una aplicació però no tens coneixements de programació per començar a construir-la? En aquesta sèrie de blocs setmanals, us portaré, el no programador, pas a pas pel procés de creació d'aplicacions per a l'iPhone, l'iPod touch i l'iPad. Uneix-te a mi cada setmana en aquesta aventura i experimentaràs com de divertit pot ser convertir les teves idees en realitat! Aquesta és la part 37 de la sèrie. Si tot just estàs començant, fes una ullada a inici de la sèrie aquí .
Les meves últimes publicacions es van desviar una mica mentre cobria appsworld 2014. En aquesta publicació, torno al bon camí i parlo d'una altra opció per subcontractar el processament web, la missatgeria i l'emmagatzematge de dades de la vostra aplicació iOS: els serveis web d'Amazon (AWS).
Amazon ofereix una gran varietat de serveis, però en aquesta publicació em centraré en el seu AWS Persistence Framework for Core Data que us permet utilitzar la base de dades al núvol d'Amazon com a back-end per al Core Data Framework d'Apple !
La part dolenta d'Amazon Web Services és la seva documentació. Està seriosament desfasat. Si seguiu la documentació més actual d'Amazon per configurar serveis web per a iOS, acabareu frustrat (com vaig fer jo escrivint aquesta publicació). Si tinc notícies d'Amazon sobre una actualització dels seus documents, revisaré les meves declaracions aquí. Personalment, crec que aquest és un problema comercial real per a Amazon, ja que intenten atraure els desenvolupadors d'iOS a la seva plataforma! Dit això, he afegit prou informació en aquesta publicació que et permetrà començar amb èxit.
AWS Persistence Framework per a dades principals
L'AWS Persistence Framework for Core Data és molt important, perquè facilita que els desenvolupadors d'iOS puguin passar a la plataforma AWS.
A part d'una mica de codi de configuració addicional, podeu utilitzar els objectes de dades principals d'iOS i el model de dades d'entitats a les vostres aplicacions, tal com ho feu normalment amb les dades locals. Com es mostra a figura 1 , el coordinador persistent de la botiga parla amb el AWSDynamoDBIncrementalStore objecte entre bastidors, que es comunica amb la base de dades AWS DynamoDB per recuperar i actualitzar les entitats de l'aplicació.
![]() |
Figura 1: AWS Persistence Framework us permet utilitzar els objectes de dades bàsics predefinits. |
DynamoDB és d'Amazon NoSQL servei de base de dades que proporciona un accés ràpid a les dades (s'executa en discs durs d'estat sòlid) que augmenta a mesura que augmenta el nombre d'usuaris d'aplicacions. Més endavant en aquesta publicació analitzarem com funcionen junts aquests objectes. Per obtenir més informació sobre Amazon DynamoDB, consulteu aquest enllaç .
Registre d'un compte gratuït d'Amazon Web Services
Amazon ofereix un nivell d'ús gratuït, que us permet obtenir una experiència pràctica amb AWS. Per conèixer tots els serveis que ofereix Amazon, així com tot el que pots fer de manera gratuïta, consulta aquest enllaç .
Tanmateix, abans de poder accedir a qualsevol dels serveis gratuïts d'AWS, heu de crear un compte gratuït. Per fer-ho, navegueu fins a això pàgina web per a aplicacions mòbils . A prop de la part superior de la pàgina trobareu un Comença de forma gratuïta botó ( Figura 2 ).
![]() |
Figura 2: podeu crear un compte gratuït per a les vostres aplicacions mòbils a AWS. |
Quan feu clic a aquest botó, se us demanarà que utilitzeu un compte d'Amazon.com existent o que creeu un compte nou. Heu d'introduir la informació de la targeta de crèdit encara que només penseu utilitzar els serveis gratuïts. Després d'introduir la informació de la targeta de crèdit, se us demanarà que introduïu un número de telèfon al qual us pugueu contactar. Després d'introduir el vostre número de telèfon, es mostra un codi de quatre dígits al vostre navegador. Rebràs una trucada telefònica d'Amazon, que us demanarà que introduïu el codi de quatre dígits per continuar el procés de registre.
A continuació, es mostra una pàgina web del Pla de suport ( Figura 3 ) que us permet seleccionar el pla de suport per als vostres serveis d'AWS. El primer de la llista és el suport bàsic o gratuït.
![]() |
Figura 3: els plans de suport d'Amazon Web Services |
Quan acabeu de registrar-vos, aneu a Consola de comptes d'AWS ( Figura 4 ) i consulteu una llista dels serveis que teniu disponibles .
![]() |
Figura 4: consola d'Amazon Web Services |
Descàrrega de l'SDK AWS per a iOS
Aleshores, com integreu Amazon Web Services amb la vostra aplicació iOS? L'SDK d'Amazon Web Services per a iOS ofereix un conjunt de marcs que podeu afegir al vostre projecte iOS perquè pugueu accedir als serveis d'Amazon des de les vostres aplicacions. Per descarregar l'SDK d'AWS per a iOS, aneu a aquest enllaç , que us porta a la pàgina web que es mostra a Figura 5 .
![]() |
Figura 5: SDK d'Amazon Web Services per a iOS |
Feu clic a AWS SDK per a iOS botó, que descarrega el aws-ios-sdk-1.7.1.zip fitxer al vostre Descàrregues carpeta.
Baixant les mostres d'iOS de l'AWS SDK
Amazon ofereix diverses mostres que mostren com accedir a una varietat de tecnologies AWS des de les vostres aplicacions iOS. Per exemple, si voleu veure un projecte similar a l'aplicació d'exemple d'iOS de Google App Engine, hauríeu de consultar SNS_SQS_MessageBoard mostra. En aquest post, em centraré en el AWSPersistence_Locations2 aplicació de mostra perquè demostra com utilitzar l'AWS Persistence Framework per a dades principals.
Si voleu seguir les instruccions pas a pas de les seccions següents, heu de descarregar aquestes mostres de GitHub a aquest enllaç .
Entendre les màquines expenedores de fitxes
Si la vostra aplicació fa trucades a Amazon Web Services, tothom que la utilitza ha de tenir credencials per accedir a AWS. Hi ha diverses tècniques per aconseguir-ho, la pitjor opció és incrustar les vostres credencials personals d'Amazon a la vostra aplicació. Això té escrit 'hack me' per tot arreu.
Afortunadament, Amazon té una opció anomenada a Màquina expenedora de fitxes (TVM) que permet que la vostra aplicació obtingui credencials anònimes i temporals per als vostres usuaris entre bastidors. De fet, per executar l'aplicació de mostra Core Data, primer heu de configurar una màquina expenedora de testimonis tal com es descriu als passos següents.
Pas 1: descarregueu l'aplicació de mostra de la màquina expenedora de fitxes
Navega a aquest enllaç i feu clic a descarregar botó cap a la part superior de la pàgina. Això baixa un fitxer zip al vostre ordinador que s'amplia per crear un AnonymousTVM subcarpeta al vostre Descàrregues carpeta.
Aquesta és l'aplicació de mostra de la màquina expenedora de fitxes d'Amazon, que instal·laràs als servidors del núvol AWS d'aquí a una estona.
Pas 2: creeu un usuari nou per a la màquina expenedora de fitxes
A continuació, heu d'afegir un usuari nou al vostre compte d'AWS que s'utilitzarà únicament per a la màquina expenedora de testimonis. Tothom que executi la vostra aplicació utilitzarà aquest usuari de TVM dedicat, però recuperarà diferents credencials anònimes per a aquest usuari dedicat. Això us permet controlar els permisos i els drets de tots els usuaris en un sol lloc.
Seguiu aquests passos per afegir un usuari nou per a la màquina expenedora de testimonis:
- Navega a aquest enllaç i inicieu la sessió si ho demaneu.
- A la part esquerra de la pàgina ( Figura 6 ), seleccioneu Usuaris i, a continuació, a la part superior de la pàgina, feu clic a Crea nous usuaris botó.
![]() |
Figura 6 - Seleccioneu Usuaris a l'esquerra i, a continuació, feu clic a Crea nous usuaris botó. |
- Al quadre de diàleg Crea usuari a sota Introduïu els noms d'usuari , introduïu el nom de l'usuari que voleu crear ( Figura 7 ). Recomano alguna cosa descriptiva, com ara TVMUser .
![]() |
Figura 7 - Creació del TVMUser |
- Assegureu-vos que el Generar una clau d'accés per a cada Usuari està seleccionada l'opció i, a continuació, feu clic Crear .
- Al diàleg que apareix a continuació ( Figura 8 ), feu clic a Baixeu les credencials botó per descarregar les credencials de l'usuari al vostre ordinador.
![]() |
Figura 8 - Descàrrega de les credencials de seguretat de l'usuari |
- Després de baixar les credencials, feu clic Tanca la finestra , i hauríeu de veure el nou usuari a la Consola d'usuari.
- Feu clic a la casella de selecció a l'esquerra del nou usuari, feu clic a Permisos pestanya i, a continuació, feu clic a Adjunteu la política d'usuaris botó ( Figura 9 ).
![]() |
Figura 9 - Adjuntant la política d'usuari |
- Al quadre de diàleg Gestiona els permisos d'usuari, feu clic a Política personalitzada i, a continuació, feu clic a Seleccioneu botó ( Figura 10 ).
![]() |
Figura 10 - Configuració d'una política personalitzada |
- Al quadre de diàleg Establir permisos, configureu el Nom de la política a quelcom descriptiu, com ara Política de TV ( Figura 11 ).
![]() |
Figura 11 - Configuració dels permisos d'usuari |
- A continuació, copieu la següent declaració de política i enganxeu-la al fitxer Document de política Caixa:
{ "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": "*" } ] }Com assenyala Amazon al seu documentació , aquesta configuració està pensada per a les aplicacions de mostra i s'hauria de modificar per restringir l'accés als serveis que no necessiteu a les vostres aplicacions.
- Feu clic a Aplica la política botó.
Pas 3: instal·leu la màquina expenedora de testimonis mitjançant AWS Elastic Beanstalk
Ara ja esteu preparat per instal·lar l'aplicació web de la màquina expenedora de fitxes. Per fer-ho, utilitzareu una eina anomenada AWS Elastic Beanstalk que Amazon proporciona per desplegar i gestionar aplicacions al núvol AWS.
- Aneu a l'aplicació Elastic Beanstalk pàgina .
- A la part superior de la pàgina, feu clic a Crea una aplicació nova enllaç ( Figura 12 ).
![]() |
Figura 12 - Creació d'una aplicació nova amb AWS Elastic Beanstalk |
- En el Informació de l'aplicació pàgina, introduïu una Nom de l'aplicació (per exemple, TVM anònim ) i opcionalment, a Descripció ( Figura 13 ), i després feu clic a Crear botó.
![]() |
Figura 13 - Especifiqueu el Nom de l'aplicació i opcionalment, a Descripció . |
- A la pàgina Tipus d'entorn ( Figura 14 ), conjunt Nivell de medi ambient a Servidor web , Configuració predefinida a Tomcat , i Tipus d'entorn a Equilibri de càrrega, autoescala i després feu clic a Continua botó.
![]() |
Figura 14 - Configuració del tipus d'entorn |
- A la pàgina Versió de l'aplicació ( Figura 15 ), seleccioneu Carregueu el vostre i, a continuació, feu clic a Trieu l'arxiu botó.
![]() |
Figura 15 - Selecció d'una font per a la vostra aplicació |
- Navegueu fins al vostre Mac Descàrregues carpeta, amplieu la carpeta TVM anònim carpeta, seleccioneu AnonymousTVM.war fitxer i, a continuació, feu clic Tria . Després, feu clic a Continua botó. Veureu que apareix un indicador d'activitat (fletxes circulars giratòries) durant uns minuts.
L'extensió de fitxer WAR significa ( En aplicació eb AMB cibulet) i és JAR ( J ava AMB chive) que s'utilitza per distribuir una col·lecció de fitxers que integren una aplicació web Java.
- A la pàgina d'informació ambiental ( Figura 16 ), introduïu un Nom de l'entorn . Tingueu en compte que això ha de ser únic. Us recomano que col·loqueu l'adreça web de la vostra empresa com a prefix per garantir la singularitat. Això estableix automàticament el URL de l'entorn valor i, opcionalment, podeu introduir a Descripció . Podeu fer clic a Comprova disponibilitat botó per assegurar-vos que el vostre URL sigui únic. Després, feu clic Continua .
![]() |
Figura 16 - Especificació de la informació de l'entorn |
- A la pàgina Recursos addicionals ( Figura 17 ), deixeu les dues caselles de selecció en blanc i feu clic a Continua botó.
![]() |
Figura 17 - Especificació de recursos addicionals |
- En el Detalls de configuració pàgina ( Figura 18 ), establiu el Tipus d'instància a t1.micro . Opcionalment podeu introduir un Correu electrònic per rebre notificacions sobre qualsevol canvi important al vostre entorn. Deixeu les altres caselles amb els seus valors predeterminats i feu clic Continua .
![]() |
Figura 18 - Especificació dels detalls de configuració |
- Ara es mostra una pàgina de revisió que us mostra totes les vostres seleccions. Feu clic a Crear botó. Al cap d'uns quants minuts, veureu un cercle verd que conté una marca de verificació blanca que indica que la instal·lació ha estat correcta ( Figura 19 ).
![]() |
Figura 19: s'ha completat la instal·lació de l'aplicació web de la màquina expenedora de fitxes. |
Les aplicacions de mostra de la vostra màquina expenedora de testimonis ara s'executen al núvol d'AWS.
Pas 4: configureu la màquina expenedora de fitxes
Ara heu d'associar la clau d'accés i la clau secreta de l'usuari de TVM que heu creat anteriorment amb l'aplicació TVM recentment instal·lada.
- Aneu a la Pàgina Elastic Beanstalk i feu clic al vostre TVM anònim aplicació.
- A la part esquerra de la pàgina web d'Anonymous TVM ( Figura 20 ), seleccioneu Configuració , i després a la capçalera de la Configuració del programari quadre, feu clic a l'engranatge.
![]() |
Figura 20 - Configuració de la màquina expenedora de fitxes |
- Desplaceu-vos cap avall fins a la secció Propietats de l'entorn ( Figura 21 ) i configureu el AWS_ACCESS_KEY_ID i AWS_SECRET_KEY propietats al valors que es van generar per a l'usuari en què vau crear Pas 2: creeu un usuari nou per al TVM . Recordeu que heu baixat aquestes credencials en un fitxer anomenat rootkey.csv.txt .
![]() |
Figura 21 - Especifiqueu la clau d'accés i la clau secreta de l'usuari de Token Vending |
- Després d'introduir les credencials, feu clic Desa .
Pas 5: executar l'aplicació de mostra
Ara que l'aplicació web de la màquina expenedora de fitxes està en funcionament, ja esteu preparat per executar l'aplicació de mostra d'iOS. Podeu executar-lo al simulador o en un dispositiu iOS real.
- Obriu el Locations2.xcodeproj fitxer a Xcode, que es pot trobar al fitxer AWSPersistence_Locations2 subcarpeta de la aws-sdk-ios-samples-master carpeta que heu baixat anteriorment en aquesta publicació.
- Al Navegador de projectes d'Xcode, amplieu el Classes grup i feu clic a Constants.h fitxer per seleccionar-lo. Canvia el TOKEN_VENDING_MACHINE_URL a l'URL de l'aplicació de la màquina expenedora de fitxes que heu instal·lat a la secció Pas 3: instal·leu la màquina expenedora de testimonis mitjançant AWS Elastic Beanstalk .
- Ara cal afegir el AWS SDK per a marcs d'iOS al projecte de mostra. Per fer-ho, al Navegador de projectes, feu clic amb el botó dret del ratolí Marcs grup i al menú de drecera, seleccioneu Afegeix fitxers a les ubicacions 2 . Navegueu fins a la ubicació on heu baixat i ampliat l'SDK AWS per a iOS, seleccioneu els marcs següents i, a continuació, feu clic a Afegeix :
- AWSruntime.framework
- AWSDynamoDB.framework
- AWSPersistence.framework
- Ara ja esteu preparat per executar l'aplicació. Feu clic a Xcode's Correr i quan l'aplicació aparegui al Simulador, hauríeu de veure la vista de la taula buida que es mostra Figura 22 .
![]() |
Figura 22 - El Ubicacions 2 aplicació en temps d'execució |
- Per afegir una ubicació nova a la llista, feu clic al botó d'acció a la part esquerra de la barra de navegació. Això mostra les opcions que es mostren a Figura 23 .
![]() |
Figura 23 - Opcions d'ubicació |
- Feu clic a Afegeix i després al quadre de diàleg Nova ubicació ( Figura 23 ), entra Seu d'Apple (aquesta és la ubicació predeterminada al simulador) o, si l'executeu en un dispositiu iOS, introduïu una descripció de la vostra ubicació actual i feu clic a Fet .
![]() |
Figura 24 - Afegeix una nova ubicació. |
Això mostra l'element desat recentment al fitxer Ubicacions llista ( Figura 25 ). Tingueu en compte que això només afegeix la nova ubicació localment al simulador o al dispositiu iOS! Heu de fer un pas addicional per desar-lo a la base de dades DyanmoDB allotjada a AWS.
![]() |
Figura 25 - La nova ubicació es desa localment. |
- Per desar la nova ubicació a la base de dades DynamoDB allotjada a Amazon Web Services, torneu a fer clic al botó d'acció i aquesta vegada seleccioneu Desa de la llista d'opcions. Això mostra el ÈXIT missatge que es mostra a Figura 26 .
![]() |
Figura 26 - La nova ubicació es desa de forma remota. |
- Per veure una llista de registres associats a la ubicació, feu clic a la ubicació de la llista i l'aplicació navegarà a la llista de registres ( Figura 27 ).
![]() |
Figura 27 - La llista de registres d'entrada |
- Per afegir un altre registre d'entrada a la ubicació actual, feu clic a Afegir nou... fila a la vista de taula. En el Comentari d'entrada emergent ( Figura 28 ), introduïu un comentari i, a continuació, feu clic Fet , que afegeix el nou Check In a la llista.
![]() |
Figura 28 - Afegeix una nova facturació |
- Podeu editar la llista de registres o la llista d'ubicacions fent clic al botó Edita a qualsevol de les pantalles. Això posa la llista corresponent en mode d'edició, que us permet suprimir elements de la llista ( Figura 29 ).
![]() |
Figura 29 - Edició de la llista de Check Ins |
Donant una ullada al projecte d'exemple Locations2
- Al Navegador de projectes d'Xcode, amplieu el Recursos grup i feu clic a Model.xcdatamodeld fitxer per mostrar-lo a la superfície de disseny. Com podeu veure a Figura 30 , hi ha un Ubicació entitat i Registrar entitat. Com és d'esperar, hi ha una relació To-Many del Ubicació fins al Registrar entitat. Aquesta és la tecnologia estàndard, Core Data.
![]() |
Figura 30 - El model de dades de l'entitat |
- A continuació, observeu el Ubicació i Registrar fitxers de classe al Recurs grup que s'han generat a partir de les entitats del model de dades. Seleccioneu el fitxer de capçalera de cadascun d'ells i observeu que no hi ha propietats de valor escalar. És una restricció de l'AWS Persistence Framework for Core Data que les propietats de l'entitat no poden ser valors escalars.
- Al Navegador de projectes, feu clic a AppDelegate.h fitxer i podeu veure el ManagedObjectModel , managedObjectContext , i persistentStoreCoordinator propietats familiars en projectes que utilitzen Core Data ( Figura 31 ).
![]() |
Figura 31 - Les propietats estàndard de Core Data |
- Per veure què passa quan s'inicia l'aplicació per primera vegada, al Navegador de projectes, seleccioneu AppDelegate.m fitxer i comproveu el fitxer application:didFinishLaunching:withOptions: mètode, que s'executa després que l'aplicació s'ha inicialitzat, però abans que aparegui la primera pantalla. Figura 32 conté un diagrama de seqüència que ofereix una visió general de la creació i configuració dels objectes relacionats amb les dades principals que es produeixen en aquest mètode.
![]() |
Figura 32 - Diagrama de seqüència d'arrencada |
Com podeu veure al diagrama de seqüència, es creen els objectes de dades principals habituals, però observeu al pas 2, un registerStoreClass el missatge s'envia a NSPersistentStoreCoordinator classe, passant AWSPersistenceDynamoDBIncrementalStore com a classe a inscriure. A continuació, al pas 3, an addPersistentStoreWithType: el missatge s'envia a persistentStoreCoordinator objecte. Aquestes dues trucades de missatge indiquen a Core Data que utilitzi AWS DynamoDB com a magatzem de dades en lloc d'una base de dades SQLite local.
Observeu al pas 4 del diagrama de seqüència que una referència al managedObjectContext s'emmagatzema al CoreDataManager . Fem una ullada més de prop a aquesta classe.
- Al Navegador de projectes sota el Classes grup, seleccioneu CoreDataManager.h fitxer i veureu les declaracions de propietat i mètode que es mostren Figura 33 .
![]() |
Figura 33 - El CoreDataManager fitxer de capçalera |
Com podeu veure, el CoreDataManager posseeix una referència al context de l'objecte i té diversos mètodes que us permeten recuperar, crear, suprimir i desar Ubicació i Registrar objectes d'entitat.
- Hi ha una altra part important del codi de configuració que hauríeu de fer una ullada. Al Navegador de projectes, seleccioneu AppDelegate.m fitxer i desplaceu-vos cap avall fins a persistentStoreCoordinator mètode que es mostra a Figura 34 .
![]() |
Figura 34 - El codi de configuració del Coordinador de la botiga persistent |
Aquest codi indica a l'AWS Persistence Framework for Core Data els mapes entre les vostres entitats i les taules de la base de dades. Per obtenir més informació, consulteu la documentació d'Amazon a aquest enllaç .
- Ara mirem el controlador de vista principal de l'aplicació per veure què passa quan apareix la primera vista. Al Navegador de projectes, seleccioneu RootViewController.m dossier. A la meitat inferior de la viewDidLoad mètode, veureu el codi que es mostra a Figura 35 .
![]() |
Figura 35 - Codi de configuració de l'AWS Persistence Framework per a dades principals |
Observeu les referències a dispatch_queue_t , dispatch_async , etcètera. Aquesta és una programació Objective-C una mica més avançada que inclou l'ús de cues d'enviament per executar sol·licituds de manera asíncrona. Està més enllà de l'abast d'aquesta publicació detallar les complexitats d'aquest codi, però podeu obtenir més informació sobre les cues d'enviament a aquest enllaç .
- Consulteu la línia de codi on a setupTables el missatge s'envia a Utilitats classe. Aquest és el lloc on es creen les taules d'AWS DynamoDB si encara no existeixen. Per obtenir més informació sobre com funciona això, consulteu el setupTables mètode de la Utilitats.m classe així com la documentació d'Amazon a aquest enllaç .
Consulteu el controlador de visualització loadFromCD mètode per veure com es recuperen les entitats del back-end. Fes una ullada al guardar tot mètode per veure com es guarden les entitats i el desfer mètode per veure com desfer els canvis a les entitats.
Limitacions de l'AWS Persistence Framework per a dades principals
Hi ha una sèrie de limitacions que hauríeu de tenir en compte a l'hora de decidir si s'utilitza o no l'AWS Persistence Framework for Core Data. Alguns d'aquests són:
- No és compatible amb versions d'iOS anteriors a la 5.0.
- Els valors escalars de les propietats de l'entitat no s'admeten.
- No es garanteix que les operacions de desament siguin transaccionals.
Per obtenir una llista completa de limitacions, consulteu Limitacions secció de la documentació d'Amazon que es troba a aquest enllaç .
Conclusió
Amazon fa que sigui temptador que els desenvolupadors d'iOS s'incorporin al carro d'AWS, fent que sigui relativament fàcil la transició a l'emmagatzematge de dades basat en núvol. Malgrat les limitacions d'AWS Persistence Framework for Core Data, trobareu que moltes aplicacions d'iOS encara poden aprofitar aquesta tecnologia. Dit això, si aquesta tecnologia no s'adapta a les teves necessitats, sempre pots optar per accedir directament a DynamoDB d'Amazon (en lloc de fer-ho mitjançant Core Data) mitjançant l'API de DynamoDB. Per obtenir més informació sobre aquesta opció, consulteu la documentació d'Amazon a aquest enllaç .
<