Escolar Documentos
Profissional Documentos
Cultura Documentos
aplicaciones de Android
Almacenamiento en la nube y consulta de usuarios,
objetos de datos y archivos en sus aplicaciones Android
C. Enrique Ortiz
Developer and author
Independent
Este artculo presenta las clases centrales de Parse API para usuarios Parse,
objetos de datos y archivos. Usted aprender cmo trabajar con listas de control
de acceso (ACLs) y cmo realizar operaciones CRUD en objetos de datos, y cmo
almacenar y recuperar archivos en la nube Parse. Los ejemplos estn incorporados
en Parse SDK for Android (ver Recursos).
Copyright IBM Corporation 2013
Analice servicios basados en la nube para aplicaciones
de Android
Marcas
Pagina 1 de 17
developerWorks
ibm.com/developerWorks/ssa/
de
datos relacional, y los objetos Parse de la misma clase son como filas dentro de una
tabla.
Analice servicios basados en la nube para aplicaciones
de Android
Pagina 2 de 17
ibm.com/developerWorks/ssa/
developerWorks
son claves de nombre que deben ser alfanumrica; como gua, use
bicapitalizacin para las claves de nombre. Los valores pueden ser de cualquier
tipo de datos que puedan almacenarse en JSON; esto es, nmeros, cadenas de
caracteres, booleanos, arrays, JSONObject.NULL, JSONObjects y JSONArrays. Otros
tipos de datos con soporte de ParseObject son arrays Java Date y byte[] . Un
ParseObject puede incluir tambin otros ParseObjects.
ParseObject
Pagina 3 de 17
developerWorks
ibm.com/developerWorks/ssa/
bilbioteca Parse simplemente guarda los datos localmente hasta que haya sido
restablecida una conexin.
Modificando un ParseObject
Si usted est familiarizado con el desarrollo de aplicaciones mviles, entonces usted
sabe qu operaciones largas como operaciones de red deben realizarse tpicamente
en segundo plano, en una hebra de trabajador y no en la hebra de sistema principal
UI. Esto previene que la hebra de sistema principal bloquee y afecte el grado de
respuesta de su interfaz de usuario. Ms adelante en el artculo, les mostrar cmo
los recursos Parse trabajan en plano de fondo para guardar, suprimir y encontrar
objetos. Por ahora, considere el siguiente mtodo sincrnico remove() , que es
usado para remover una clave de un objeto Parse:
pObject.remove("myNumber"); // remove the field/key "myNumber" from pObject
Pagina 4 de 17
ibm.com/developerWorks/ssa/
developerWorks
Los usuarios pueden iniciar sesin como usuarios Parse de su aplicacin, como se
muestra en elListado 3:
Listado 3. ParseUser signup
ParseUser user = new ParseUser();
user.setUsername("eortiz");
user.setPassword("123456");
user.setEmail("eortiz@nospam.com");
user.put("userType", "Author"); // add another field
// Call the asynchronous background method to sign up
user.signUpInBackground(new SignUpCallback() {
public void done(ParseException e) {
if (e == null) {
// Successful. Allow access to app.
} else {
// Failed....
}
}
});
Pagina 5 de 17
developerWorks
ibm.com/developerWorks/ssa/
ACLS de Parse
Una ACL es una lista de permisos de acceso (o controles) que son asociados
a un objeto de datos. La clase ParseACL le permite definir los permisos para un
determinado ParseObject. Con las ACLs, usted puede definir acceso pblico a
sus objetos de datos de aplicaciones y usted puede limitar el acceso a usuarios
especficos o grupos de usuarios (via papeles). El Listado 7 demouestra el uso de
las Parse ACLs:
Listado 7. Usando ParseACL para permisos de acceso
// Define a Parse user
ParseUser user = new ParseUser();
user.setUsername(username);
:
:
// Define a read/write ACL
ParseACL rwACL = new ParseACL();
rwACL.setReadAccess(user, true); // allow user to do reads
rwACL.setWriteAccess(user, true); // allow user to do writes
:
:
// Define a Parse object and its ACL
ParseObject gameObject = new ParseObject("Game");
gameObject.setACL(rwACL); // allow user do read/writes on gameObject
gameObject.saveInBackground(); // save the ACL'ed object to the cloud
:
:
// You can define a public ACL that gives public access to the object
ParseACL publicACL = new ParseACL();
publicACL.setPublicReadAccess(true);
publicACL.setPublicWriteAccess(true);
gameObject.setACL(publicACL); // allow public read/writes
gameObject.saveInBackground(); // save the ACL'ed object to the cloud
Usted tambin puede definir una ACL predeterminada para todos los objetos
creados nuevamente. En el Listado 8 yo he configurado la ACL predeterminada para
que sea pblica para lectura y escritura, conforme se define por publicACL en el
Listado 7.
Analice servicios basados en la nube para aplicaciones
de Android
Pagina 6 de 17
ibm.com/developerWorks/ssa/
developerWorks
Aunque no se muestra aqu, tambin podramos usar la clase ParseRole para otorgar
permisos de acceso a grupos de usuarios.
Poseriormente, observaremos cmo los objetos de datos Parse son guardados y
recuperados de la nube Parse.
Pagina 7 de 17
developerWorks
ibm.com/developerWorks/ssa/
Pagina 8 de 17
ibm.com/developerWorks/ssa/
developerWorks
e.printStackTrace();
}
// Fetch the parse object unconditionally, with Callback
pObject.fetchInBackground(new GetCallback() {
@Override
public void done(ParseObject obj, ParseException ex) {
if (ex == null) {
// Success
} else {
// Failed
}
}
});
Usted tambin puede captar solo si necesita; por ejemplo, cuando capta un objeto
Parse que ha relacionado objetos Parse, como en el Listado 12:
Listado 12. Captando conforme se necesita
ParseObject po = new ParseObject("ExampleObject");
:
ParseObject po2 = po.getParseObject("key");
// Fetch only if needed
try {
po2.fetchIfNeeded();
} catch (ParseException e) {
e.printStackTrace();
}
Pagina 9 de 17
developerWorks
ibm.com/developerWorks/ssa/
Pagina 10 de 17
ibm.com/developerWorks/ssa/
developerWorks
Por ejemplo:
Pagina 11 de 17
developerWorks
ibm.com/developerWorks/ssa/
} else {
// Failed
}
}
});
Otra cosa que se debe observar es que ParseQuery los resultados son puestos en
memoria cach. Usted puede configurar la poltica de consulta-memoria cach de
diversas maneras dependiendo de las necesidades de su aplicacin. L as siguientes
polticas de memoria cach cuentan actualmente con soporte:
IGNORE_CACHE: No usar la memoria cach; esta es la poltica de memoria cach
predeterminada.
CACHE_ONLY: Solo cargar de la memoria cach. Si no hay resultados en memoria
cach, habr una ParseException.
NETWORK_ONLY: Siempre ir a la red, pero guardar los resultados en la memoria
cach.
CACHE_ELSE_NETWORK: Dirigirse a la memoria cach primero. Si eso falla, cargar
de la red. Si no hay xito con la memoria cach o con la red, el resultado ser
una ParseException.
NETWORK_ELSE_CACHE: Dirigirse a la red primero. Si eso falla, cargar de la
memoria cach. Si no hay xito con la red o con la memoria cach, el resultado
ser una ParseException.
CACHE_THEN_NETWORK: Dirigirse a la memoria cach primero, posteriormente
cargar de la red. Observe que FindCallback ser llamado dos veces: primero
con los resultados en memoria cach, posteriormente con resultados de red.
Esta poltica solo puede ser usada asincrnicamente con findInBackground.
Configurar la poltica de memoria cach es sencillo. Hgalo antes de llamar al
mtodo find...() , como se muestra en el Listado 18:
Listado 18. Gestin de CachePolicy
ParseQuery query = new ParseQuery("Players");
query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);
query.findInBackground(new FindCallback() {
@Override
public void done(List<ParseObject> players, ParseException e) {
if (e == null) {
// Success - players contain active players
} else {
// Failed
}
}
});
Pagina 12 de 17
ibm.com/developerWorks/ssa/
developerWorks
Como puede anticipar, delete() un llamado que bloquea, lo que significa que es
responsabilidad de usted asignar adecuadamente este llamado a su propia hebra
de trabajador. O usted puede dejar que Parse se encargue de las hebras usando
deleteInBackground() con o sin una devolucin de llamado.
Pagina 13 de 17
developerWorks
ibm.com/developerWorks/ssa/
En conclusin
La Parse API es muy completa e incluye clases para acceder a servicios mviles
como notificacin push, uso de geo-datos, integracin con plataformas de medios
sociales y ms. En este artculo, he mostrado solo la superficie de lo que puede
hacer con Parse al introducir las Parse APIs para almacenamiento de nube de
datos y archivos. El saber cmo almacenar y manipular usuarios, objetos de datos,
Analice servicios basados en la nube para aplicaciones
de Android
Pagina 14 de 17
ibm.com/developerWorks/ssa/
developerWorks
archivos y ACLs de Parse en la nube Parse es una base buena para explorar ms
esta plataforma de nube para desarrollo mvil.
Reconocimientos
Muchas gracias a Athen O'Shea por su revisin de este artculo.
Pagina 15 de 17
developerWorks
ibm.com/developerWorks/ssa/
Recursos
Aprenda ms acerca de Parse Android SDK; tambin vea la Gua Rpida
de Parse para escoger una plataforma mvil, configurar una aplicacin, y
descargar e instalar su Parse SDK.
Vea una lista completa de las Parse Android APIs.
"Desarrolle aplicaciones Android con Eclipse (Frank Ableson, developerWorks,
Febrero del 2008): Obtenga ms prctica desarrollando aplicaciones Android
en el entorno de desarrollo de Eclipse, esta vez usando el plug-in de Android
Eclipse.
"Introduction to jQuery Mobile" (C. Enrique Ortiz, developerWorks, Mayo del
2012): Aprenda lo bsico de jQuery Mobile y cmo escribir una interfaz de
usuario funcional de aplicacin web mvil. Los ejemplos de trabajo lo guiarn
a travs de pginas, navegacin, barras de herramientas, visualizaciones de
lista, controles de forma y efectos de transicin en jQuery Mobile.
"Resuelva los desafos de integracin de su aplicacin mvil para muchos
dispositivos en mltiples plataformas" (Olivier Picciotto, developerWorks,
octubre de 2012): El desarrollo mvil y la computacin en nube son
prcticamente inseparables estos das, pero integrar las aplicaciones mviles
en la nube todava es un territorio nuevo. Aprenda cmo la plataforma de
aplicacin empresarial mvil (MEAP) resuelve algunos de los desafos de
integracin de "mvil hacia nube".
"DevOps for mobile development" (Michael Rowe, developerWorks, Julio del
2012): Las compaas de todo el mundo desean explotar el mercado mvil al
proporcionar a los clientes y usuarios aplicaciones que facilitan la computacin
mvil. Este artculo reflexiona acerca de los problemas tcnicos y de negocios
con la integracin de desarrollo y operaciones para las plataformas mviles en
el lugar de trabajo.
Siga a developerWorks en Twitter.
Vea las demos on demand de developerWorks que van desde demostraciones
sobre instalacin y configuracin de productos para principiantes, hasta
funcionalidades avanzadas pera desarrolladores experimentados.
Participe de la comunidad developerWorks. Conctese con otros usuarios de
developerWorks mientras explora los blogs dirigidos a desarrolladores, foros,
grupos y wikis.
Pagina 16 de 17
ibm.com/developerWorks/ssa/
developerWorks
Sobre el autor
C. Enrique Ortiz
C. Enrique Ortiz es un tecnlogo y autor con gran experiencia. Un
ex ingeniero en software de transbordadores espaciales que decidi
focalizarse en tecnologas mviles ms que en trabajar en cohetes
peligrosos, asesora a desarrolladores, empresas que recin se inician
e inversores sobre cosas mviles: tecnologa, estrategia, productos y
lanzamientos al mercado.
Copyright IBM Corporation 2013
(www.ibm.com/legal/copytrade.shtml)
Marcas
(www.ibm.com/developerworks/ssa/ibm/trademarks/)
Pagina 17 de 17