Contenido


Construya una aplicación Android usando el servicio de nube IBM Mobile Data para IBM Cloud

Almacene, borre, actualice y consulte objetos guardados en la nube

Comments

Usted puede ya conocer sobre algunos de los beneficios de IBM Cloud, la plataforma abierta de IBM para desarrollar y desplegar las aplicaciones móviles y de web. Los muchos servicios previamente construidos en los servicios Móviles en IBM Cloud facilitan que los desarrolladores construyan y mejoren las aplicaciones.

Los tutoriales en estas series le muestran la forma de agregar servicios basados en la nube a sus aplicaciones. En este tutorial, cubriremos los pasos para construir una aplicación Android usando el servicio IBM Mobile Data para el servicio IBM Cloud .

¿Alguna vez han ido a una tienda de comestibles y olvidado el ingrediente exacto que su cónyuge necesitaba para esa fabulosa receta de soufflé? ¿O el postre que pidieron los niños para el día siguiente? Qué pasaría si pudieran meter sus solicitudes en una lista compartida de comestibles y que pudiera recibir notificaciones de envío alertándolo sobre sus actualizaciones?

Introduzca la aplicación BlueList. ¡Es una aplicación simple que usa los servicios IBM Cloud y que lo iniciará para empezar a escribir sus propias aplicaciones (más complejas) en poco tiempo! Este tutorial le muestra la forma de empezar con una aplicación Android y agregar el servicio IBM Mobile Data para IBM Cloud para guardar, borrar, actualizar y consultar objetos guardados en la nube. (Un tutorial futuro le mostrará la forma de agregar los servicios Push y Node.js Cloud a su aplicación para poder obtener notificaciones cuando se actualice la lista de comestibles y por lo tanto la lista puede renovarse en todos los dispositivos cuando uno de los dispositivos actualice la lista en alguna forma.)

Esta aplicación simple usa los servicios de IBM Cloud y lo ayudará a iniciar a escribir sus propias aplicaciones (más complejas) en poco tiempo.

Obtenga el código bluelist-base(v0)Obtenga el código bluelist-mobiledata(v1)

El código bluelist-base(v0) es la versión base de la aplicación BlueList. Le mostraremos la forma de agregar el servicio IBM Mobile Data para IBM Cloud, de tal manera que su código puede verse como el código bluelist-mobiledata(v1). Puede empezar con bluelist-base(v0) y seguir los pasos, o saltar hacia adelante descargando directamente bluelist-mobiledata(v1). La versión bluelist-mobiledata(v1) de la aplicación BlueList incluye IBM Mobile Data para el servicio IBM Cloud.

Lo que necesitará para su aplicación

  • Estar familiarizado con el desarrollo de Android .
  • Un ambiente de desarrollo Android. Utilizamos Eclipse con ADT, pero siéntase en la libertad de usar el de su preferencia.

    Nota: Si decide usar Android Studio puede saltarse los Pasos 1.7-1.9 dado que el archivo gradle.build que se suministra en el directorio raíz de Android jalará las dependencias requeridas. Favor de revisarlo, familiarícese con el código de construcción de Gradle y elimine las dependencias requeridas. También necesitará descargar Gradle.zip y extraer los contenidos del directorio de su elección. Cuando Android Studio le pide un GRADLE_HOME, use la ruta a donde extrajo el .zip, donde vive el directorio bin.

  • El código bluelist-base(v0). Haga clic en el botón superior, después importe y construya el código bluelist-android-base en su ambiente de desarrollo de Android. Corra este código en su emulador. Reinicie la aplicación y note que no persistan las partidas de la lista. Los pasos en este tutorial le mostrarán la forma de agregar el servicio IBM Mobile Data para IBM Cloud a su aplicación para que persistan las partidas de la lista.
  • Una ID de IBM Cloud, para que pueda usar el servicio IBM Mobile Data para el servicio IBM Cloud .

Paso 1. Cree una aplicación Mobile Cloud en IBM Cloud

  1. Inicie una sesión con IBM Cloud.
  2. Haga clic en Add an application para ir al catálogo. Screen shot of the Create an Application button
  3. Haga clic en Mobile Cloud, bajo Boilerplates. Screen shot of the Mobile Cloud boilerplate
    Screen shot of the Mobile Cloud boilerplate
  4. Haga clic en Create Application. Screen shot of the Mobile Cloud Application with the create application button
    Screen shot of the Mobile Cloud Application with the create application button
  5. Llene el panel "Finish Adding Mobile Cloud " seleccionando un espacio y eligiendo un nombre para su aplicación. Después haga clic en Create. Screen shot of the app creation panel
    Screen shot of the app creation panel
  6. Después de crear la aplicación, aparecerá en su tablero. Haga clic en su nueva aplicación para ir a su página Overview. Screen shot of the Application in the Catalog
    Screen shot of the Application in the Catalog
  7. Verá Overview para su nueva aplicación. Una vez allí, haga clic en Download SDKs. (Salte ese paso si está usando Android Studio)
    Screen shot of the Download SDKs button
    Screen shot of the Download SDKs button

    Nota: Necesitará este ID de la Aplicación posteriormente en estas instrucciones.

  8. Verá la documentación para construir una aplicación móvil. Una vez allí, haga clic en Android SDK. (Salte si está usando Android Studio)Screen shot of the Download SDKs button
    Screen shot of the Download SDKs button
  9. Descomprima el SDK que acaba de descargar y copie los archivos jars requeridos (ibmbluemix.jar, ibmdata.jar, e ibmfilesync.jar) en la carpeta libs de su proyecto bluelist-android-base. (Salte si está usando Android Studio)Screen shot of the jar files going into the project
    Screen shot of the jar files going into the project
  10. Copie los valores de applicationID, applicationSecret y applicationRoute al archivo bluelist.properties en la carpeta de activos de su proyecto. Los valores de applicationRoute y applicationID están disponibles en la página de Overview de su aplicación. applicationSecret sólo está disponible en la página Mobile Application Security de su aplicación. Para obtener estos valores, regístrese a IBM Cloud, para ir a su Tablero y haga clic en la aplicación deseada. Los valores de applicationRoute y applicationID estarán visibles en la parte superior de la página Overview. Haga clic en el vínculo Mobile Application Security en el área de navegación para obtener el valor de applicationSecret. El archivo de propiedades se usa para cargar los datos externos importantes.
     applicationID=<INSERT_APPLICATION_ID_HERE> applicationSecret=<INSERT_APPLICATION_SECRET_HERE> applicationRoute=<INSERT_APPLICATION_ROUTE_HERE>

Paso 2. Agregue los permisos básicos

  1. Su aplicación Android necesitará una capacidad básica de red y los permisos, así que hemos incluido los siguientes permisos en el archivo manifest. Abra el archivo AndroidManifest.xml para echar un vistazo.
 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Paso 3. Edite BlueListApplication para inicializar SDK y dar servicio así como registrar la especialización de la Partida con el servicio IBM Mobile Data para IBM Cloud

  1. Defina un par de constantes para el uso en la lectura del archivo de bluelist.properties.
     public final class BlueListApplication extends Application { private static final String APP_ID = "applicationID"; private static final String APP_SECRET = "applicationSecret"; private static final String APP_ROUTE = "applicationRoute"; private static final String PROPS_FILE = "bluelist.properties";
  2. En la creación de la aplicación, lea del archivo bluelist.properties para obtener la ID de la Aplicación. Realice estas ediciones en el método onCreatetal y como se muestra abajo:
     public void onCreate() { super.onCreate(); itemList = new ArrayList<Item>(); // Read from properties file Properties props = new java.util.Properties(); Context context = getApplicationContext(); try { AssetManager assetManager = context.getAssets(); props.load(assetManager.open(PROPS_FILE)); Log.i(CLASS_NAME, "Found configuration file: " + PROPS_FILE); } catch (FileNotFoundException e) { Log.e(CLASS_NAME, "The bluelist.properties file was not found.", e); } catch (IOException e) { Log.e(CLASS_NAME, "The bluelist.properties file could not be read properly.", e); } }
  3. A la creación de la aplicación Android, inicialice SDK, inicialice el servicio y registre la especialización de la Partida. Haga estas ediciones en el método onCreate, inmediatamente después de leer el archivo de propiedades, como se muestra abajo:
     // initialize the IBM core backend-as-a-service IBMBluemix.initialize(this, props.getProperty(APP_ID), props.getProperty(APP_SECRET), props.getProperty(APP_ROUTE)); // initialize the IBM Data Service IBMData.initializeService(); // register the Item Specialization Item.registerSpecialization(Item.class);
  4. No olvide utilizar Eclipse para organizar las importaciones (Ctrl+Shift+O) al continuar. Esto importará automáticamente cualesquiera elementos requeridos de SDK jars que usted copió en el proyecto anterior. Aún podrá ver algunos errores en este punto, pero estos deberán resolverse al continuar con estas instrucciones.

Paso 4. Edite la clase de Partida para usar IBM Mobile Data para el servicio IBM Cloud

  1. Integre el servicio IBM Mobile Data para IBM Cloud extendiendo IBMDataObject de Mobile Data y anotando esta clase como IBMDataObjectSpecialization. Asegúrese de agregar una cadena NAME, que se usarán posteriormente como una clave para acceder a los objetos.
     @IBMDataObjectSpecialization("Item") public class Item extends IBMDataObject { public static final String CLASS_NAME = "Item"; private static final String NAME = "name";
  2. Edite los métodos getName() y setName() para usar el servicio de Mobile Data disponible y los métodos getObject y setObject. Los valores asociados con un objeto pueden referenciarse por una llave. Puede establecer los valores usando setObject(<key>, <value>), y recuperarlos usando getObject(<key>).
     public String getName() { return (String) getObject(NAME); } public void setName(String itemName) { setObject(NAME, (itemName != null) ? itemName : ""); }
  3. Remueva el constructor Item dado que ya no es necesario.
  4. ¡Una vez más, organice sus importaciones!

Paso 5. En la clase MainActivity, use el servicio IBM Mobile Data para IBM Cloud para crear, leer y borrar datos en la nube

  1. Implemente el método listItems para leer las partidas del servicio IBM Mobile Data para IBM Cloud. Clasificaremos estas partidas en orden alfabético sin sensibilidad a las mayúsculas y minúsculas. Cree listItems como un método de clase MainActivity.
     public void listItems() { try { IBMQuery<Item> query = IBMQuery.queryForClass(Item.class); // Query all the Item objects from the server query.find().continueWith(new Continuation<List<Item>, Void>() { @Override public Void then(Task<List<Item>> task) throws Exception { final List<Item> objects = task.getResult(); // Log if the find was cancelled. if (task.isCancelled()){ Log.e(CLASS_NAME, "Exception : Task " + task.toString() + " was cancelled."); } // Log error message, if the find task fails. else if (task.isFaulted()) { Log.e(CLASS_NAME, "Exception : " + task.getError().getMessage()); } // If the result succeeds, load the list. else { // Clear local itemList. // We'll be reordering and repopulating from DataService. itemList.clear(); for(IBMDataObject item:objects) { itemList.add((Item) item); } sortItems(itemList); lvArrayAdapter.notifyDataSetChanged(); } return null; } },Task.UI_THREAD_EXECUTOR); } catch (IBMDataException error) { Log.e(CLASS_NAME, "Exception : " + error.getMessage()); } }
  2. Después de establecer ArrayAdapter en el método onCreate, llame listItems() para poblar la lista con partidas ya guardadas usando el servicio IBM Mobile Data for IBM Cloud.
     itemsLV.setAdapter(lvArrayAdapter); /* Refresh the list. */ listItems();
  3. Cambie el método createItem para crear nuevas partidas usando una instancia de la clase IBMDataObject. Llame el método de Mobile Data save() en la instancia y use el método continueWith() para manejar cualesquiera errores o cargar la lista actualizada.
     public void createItem(View v) { EditText itemToAdd = (EditText) findViewById(R.id.itemToAdd); String toAdd = itemToAdd.getText().toString(); Item item = new Item(); if (!toAdd.equals("")) { item.setName(toAdd); // Use the IBMDataObject to create and persist the Item object. item.save().continueWith(new Continuation<IBMDataObject, Void>() { @Override public Void then(Task<IBMDataObject> task) throws Exception { // Log if the save was cancelled. if (task.isCancelled()){ Log.e(CLASS_NAME, "Exception : Task " + task.toString() + " was cancelled."); } // Log error message, if the save task fails. else if (task.isFaulted()) { Log.e(CLASS_NAME, "Exception : " + task.getError().getMessage()); } // If the result succeeds, load the list. else { listItems(); } return null; } }); // Set text field back to empty after item is added. itemToAdd.setText(""); } }
  4. Haga algunos cambios al método deleteItem. Ahora cambiará el método de Mobile Data delete() en una instancia de la clase IBMDataObject class. El método delete() regresa a Bolts Task que se usa para verificar el éxito o la falla de la tarea.
     public void deleteItem(Item item) { itemList.remove(listItemPosition); // This will attempt to delete the item on the server. item.delete().continueWith(new Continuation<IBMDataObject, Void>() { @Override public Void then(Task<IBMDataObject> task) throws Exception { // Log if the delete was cancelled. if (task.isCancelled()){ Log.e(CLASS_NAME, "Exception : Task " + task.toString() + " was cancelled."); } // Log error message, if the delete task fails. else if (task.isFaulted()) { Log.e(CLASS_NAME, "Exception : " + task.getError().getMessage()); } // If the result succeeds, reload the list. else { lvArrayAdapter.notifyDataSetChanged(); } return null; } },Task.UI_THREAD_EXECUTOR); lvArrayAdapter.notifyDataSetChanged(); }

Paso 6. En la clase EditActivity, actualice los datos en la nube usando IBM Mobile Data para el servicio IBM Cloud

  1. El método finishedEdit llamará el método save() de Mobile Data en la instancia de IBMDataObject para actualizarse. Implemente usando el método continueWith() para manejar cualesquiera errores.
     public void finishedEdit(View v) { Item item = itemList.get(location); EditText itemToEdit = (EditText) findViewById(R.id.itemToEdit); String text = itemToEdit.getText().toString(); item.setName(text); item.save().continueWith(new Continuation<IBMDataObject, Void>() { @Override public Void then(Task<IBMDataObject> task) throws Exception { if(task.isCancelled()) { Log.e(CLASS_NAME, "Exception : " + task.toString() + " was cancelled."); } else if (task.isFaulted()) { Log.e(CLASS_NAME, "Exception : " + task.getError().getMessage()); } else { Intent returnIntent = new Intent(); setResult(BlueListApplication.EDIT_ACTIVITY_RC, returnIntent); finish(); } return null; } },Task.UI_THREAD_EXECUTOR); }

Paso 7. Corra la aplicación

  1. ¡Ahora que ya ha hecho todos los cambios de código, su código deberá ser ahora el equivalente del código bluelist-mobiledata (v1), y deberán persistir las partidas de la lista!
  2. Corra el código actualizado en su emulador (Nexus 7 o Galaxy Nexus funciona bien) o en su dispositivo. Haga clic en Run > Run As > Android Application.
     Screen shot of the first page of BlueList app
  3. Agregue algunas partidas a la lista.
     
    /developerworks/library/mo-android-mobiledata-app/Screen shot of adding some grocerylist itemsScreen shot of adding some grocerylist items
  4. Reinicie la aplicación.
  5. Note que han persistido sus partidas de datos. ¡Ahora ya tiene datos en la nube!

Paso 8. Consulte sus datos en la nube

  1. Inicie su sesión en IBM Cloud.
  2. Haga clic en su aplicación en la vista Dashboard.
  3. Haga clic en Mobile Data Service.
  4. En el tabulador Manage Data , puede ver como se guarda Data Classes en la nube, así como las instancias de cada Data Class en las que se persisten. Screen shot of data viewer
    Screen shot of data viewer
  5. En el tabulador Analytics, puede ver varios datos de analítica para su aplicación, incluyendo las llamadas de API totales por tipo y la cantidad de almacenamiento utilizado. Screen shot of analytics statistics and graphics
    Screen shot of analytics statistics and graphics

Conclusión

Desarrollando esta aplicación usando el servicio ¡El servicio IBM Mobile Data en IBM Cloud le hará comprender qué tan sencillo es consumir e integrar las capacidades de datos usando los servicios móviles de nube!


Recursos para Descargar


Temas relacionados


Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Desarrollo móvil, Cloud computing
ArticleID=994421
ArticleTitle=Construya una aplicación Android usando el servicio de nube IBM Mobile Data para IBM Cloud
publish-date=02262018