AEM Capítulo 7: Consumo de servicios de contenido desde una aplicación móvil (en inglés)

El capítulo 7 del tutorial utiliza una aplicación móvil nativa de Android AEM para consumir contenido de los servicios de contenido de la.

La aplicación móvil de Android

Este tutorial usa una aplicación nativa simple de Android AEM Mobile para consumir y mostrar el contenido de eventos expuesto por los servicios de contenido de la aplicación de.

El uso de Android no es muy importante, y la aplicación móvil que la consume se puede escribir en cualquier módulo para cualquier plataforma móvil, por ejemplo, iOS.

Android se utiliza para el tutorial debido a la capacidad de ejecutar un Android AEM Emulator en Windows, macOs y Linux, su popularidad y que puede escribirse como Java, un lenguaje bien entendido por los desarrolladores de.

La aplicación móvil de Android del tutorial no está ​pensada para indicar cómo generar aplicaciones móviles de Android o transmitir las prácticas recomendadas de desarrollo de Android AEM, sino para ilustrar cómo se pueden consumir los servicios de contenido de la aplicación móvil.

AEM Cómo impulsan los servicios de contenido la experiencia de la aplicación móvil

Asignación de aplicación móvil a servicios de contenido

  1. El logotipo definido por el componente de imagen de la página Events API.
  2. La línea de etiqueta tal como se define en el componente de texto de la página Events API.
  3. Esta lista de eventos se deriva de la serialización de los fragmentos de contenido de eventos, expuestos a través del componente de lista de fragmentos de contenido configurado.

Demostración de aplicaciones móviles

Configuración de la aplicación móvil para un uso de host no local

AEM Si Publish AEM no se está ejecutando en http://localhost:4503, el host y el puerto se pueden actualizar en Settings de la aplicación móvil para que apunten a la propiedad host/puerto de Publish.

Ejecución local de la aplicación móvil

  1. Descargue e instale Android Studio para instalar el emulador de Android.

  2. Descargar el archivo de Android APK GitHub > Assets > wknd-mobile.x.x.xapk

  3. Abrir Android Studio

    • Al iniciar Android Studio por primera vez, aparecerá un mensaje para instalar Android SDK. Acepte los valores predeterminados y finalice la instalación.
  4. Abra Android Studio y seleccione Perfil o Depurar APK

  5. Seleccione el archivo APK (wknd-mobile.x.x.x.apk) descargado en el paso 2 y haga clic en Aceptar

    • Si se le pide que cree una nueva carpeta o que use la existente, seleccione usar existente.
  6. En el primer inicio de Android Studio, haga clic con el botón derecho en wknd-mobile.x.x.x de la lista Proyectos y seleccione Abrir configuración del módulo.

    • En Módulos > wknd-mobile.x.x.x > pestaña Dependencias, seleccione Plataforma de API 29 de Android. Pulse Aceptar para cerrar y guardar los cambios.
    • Si no lo hace, verá el error "Seleccione el SDK de Android" al intentar iniciar el emulador.
  7. Abra Administrador AVD seleccionando Herramientas > Administrador AVD o pulsando el icono Administrador AVD en la barra superior.

  8. En la ventana Administrador AVD, haga clic en + Crear dispositivo virtual… si aún no tiene el dispositivo registrado.

    1. En el lado izquierdo, seleccione la categoría Teléfono.
    2. Seleccione un píxel 2.
    3. Haga clic en el botón Siguiente.
    4. Seleccione Q con nivel de API 29.
      • Tras el primer inicio de AVD Manager, se le pedirá que Descargue la API con versión. Haga clic en el vínculo Descargar junto a la versión "Q" y complete la descarga y la instalación.
    5. Haga clic en el botón Siguiente.
    6. Haga clic en el botón Finalizar.
  9. Cierre la ventana Administrador AVD.

  10. En la barra de menú superior, seleccione wknd-mobile.x.x.x de la lista desplegable Ejecutar/Editar configuraciones.

  11. Pulse el botón Ejecutar junto a la Configuración de ejecución/edición seleccionada

  12. En la ventana emergente, seleccione el dispositivo virtual Pixel 2 API 29 recién creado y pulse Aceptar

  13. Si la aplicación WKND Mobile no se carga inmediatamente, busque y pulse el icono WKND en la pantalla de inicio de Android en el emulador.

    • Si el emulador se inicia pero su pantalla permanece en negro, pulse el botón power de la ventana de herramientas del emulador situada junto a la ventana del emulador.
    • Para desplazarse dentro del dispositivo virtual, haga clic y mantenga presionado el ratón y arrastre.
    • AEM Para actualizar el contenido desde el punto de vista de la actualización, tire hacia abajo desde la parte superior hasta el icono Actualizar.
      muestra, y la versión.

El código de la aplicación móvil

En esta sección se destaca el código de la aplicación móvil de Android AEM que más interactúa y depende de los servicios de contenido de la aplicación y de su salida JSON.

AEM Tras la carga, la aplicación móvil realiza HTTP GET en /content/wknd-mobile/en/api/events.model.json, que es el extremo de Content Services configurado para proporcionar contenido que dirija la aplicación móvil.

Debido a que la plantilla editable de la API de eventos (/content/wknd-mobile/en/api/events.model.json) está bloqueada, la aplicación móvil se puede codificar para buscar información específica en ubicaciones específicas en la respuesta JSON.

Flujo de código de alto nivel

  1. AEM Al abrir la aplicación WKND Mobile, se invoca una solicitud de HTTP GET a la Publish de la aplicación móvil en /content/wknd-mobile/en/api/events.model.json para recopilar el contenido y rellenar la interfaz de usuario de la aplicación móvil.

  2. AEM AEM Una vez recibido el contenido de la aplicación móvil, cada uno de los tres elementos de vista de la aplicación móvil, el logotipo y la línea de etiquetas y la lista de eventos, se inicializan con el contenido de la aplicación de la aplicación móvil, que se ha iniciado con el contenido de la lista de eventos de la aplicación de la aplicación móvil de la aplicación de la aplicación de la aplicación de la aplicación móvil, la etiqueta y la lista de eventos de la aplicación de la.

    • AEM AEM Para enlazar al contenido de la aplicación móvil al elemento de vista, el JSON que representa cada componente de la aplicación móvil, es un objeto asignado a un POJO de Java, que a su vez está enlazado al elemento de vista de Android.

      • Componente de imagen JSON → Logo POJO → Logo ImageView
      • Componente de texto JSON → TagLine POJO → Texto ImageView
      • Lista de fragmentos de contenido JSON → eventos POJO →Events RecyclerView
    • El código de la aplicación móvil puede asignar el JSON a los POJO debido a las ubicaciones bien conocidas dentro de la respuesta JSON mayor. AEM Recuerde, las claves JSON de "image", "text" y "contentfragmentlist" están dictadas por los nombres de nodo de los componentes de la de respaldo. Si estos nombres de nodo cambian, la aplicación móvil se romperá, ya que no sabrá cómo obtener el contenido requerido de los datos JSON.

AEM Invocación del punto final de servicios de contenido de

AEM A continuación se muestra una destilación del código de MainActivity de la aplicación móvil responsable de invocar los servicios de contenido de la aplicación para recopilar el contenido que impulsa la experiencia de la aplicación móvil.

protected void onCreate(Bundle savedInstanceState) {
    ...
    // Create the custom objects that will map the JSON -> POJO -> View elements
    final List<ViewBinder> viewBinders = new ArrayList<>();

    viewBinders.add(new LogoViewBinder(this, getAemHost(), (ImageView) findViewById(R.id.logo)));
    viewBinders.add(new TagLineViewBinder(this, (TextView) findViewById(R.id.tagLine)));
    viewBinders.add(new EventsViewBinder(this, getAemHost(), (RecyclerView) findViewById(R.id.eventsList)));
    ...
    initApp(viewBinders);
}

private void initApp(final List<ViewBinder> viewBinders) {
    final String aemUrl = getAemUrl(); // -> http://localhost:4503/content/wknd-mobile/en/api/events.mobile.json
    JsonObjectRequest request = new JsonObjectRequest(aemUrl, null,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                for (final ViewBinder viewBinder : viewBinders) {
                    viewBinder.bind(response);
                }
            }
        },
        ...
    );
}

onCreate(..) es el vínculo de inicialización para la aplicación móvil y registra a los 3 ViewBinders personalizados responsables de analizar el JSON y enlazar los valores a los elementos View.

A continuación, se llama a initApp(...), que realiza la solicitud de GET AEM AEM HTTP al punto final de los servicios de contenido de la en la interfaz de usuario de Publish para recopilar el contenido de la aplicación. Al recibir una respuesta JSON válida, la respuesta JSON se pasa a cada ViewBinder responsable de analizar el JSON y enlazarlo a los elementos móviles View.

Análisis de la respuesta JSON

A continuación veremos LogoViewBinder, que es simple, pero resalta varias consideraciones importantes.

public class LogoViewBinder implements ViewBinder {
    ...
    public void bind(JSONObject jsonResponse) throws JSONException, IOException {
        final JSONObject components = jsonResponse.getJSONObject(":items").getJSONObject("root").getJSONObject(":items");

        if (components.has("image")) {
            final Image image = objectMapper.readValue(components.getJSONObject("image").toString(), Image.class);

            final String imageUrl = aemHost + image.getSrc();
            Glide.with(context).load(imageUrl).into(logo);
        } else {
            Log.d("WKND", "Missing Logo");
        }
    }
}

AEM La primera línea de bind(...) navega hacia abajo en la respuesta JSON a través de las claves :items → root → :items, que representa el contenedor de diseño de la al que se agregaron los componentes.

Desde aquí se realiza una comprobación de una clave denominada image, que representa el componente de imagen (de nuevo, es importante que este nombre de nodo → clave JSON sea estable). Si este objeto existe, se leerá y se asignará al POJO de imagen personalizado a través de la biblioteca Jackson ObjectMapper. El POJO de imagen se explora a continuación.

Por último, src del logotipo se carga en Android ImageView mediante la biblioteca de ayuda Glide.

AEM AEM Tenga en cuenta que debemos proporcionar el esquema, el host y el puerto de la (a través de aemHost) a la instancia de Publish AEM, ya que los servicios de contenido solo proporcionarán la ruta JCR (es decir, los servicios de contenido). /content/dam/wknd-mobile/images/wknd-logo.png) al contenido referenciado.

El POJO de imagen image-pojo

Aunque es opcional, el uso de Jackson ObjectMapper o capacidades similares proporcionadas por otras bibliotecas, como Gson, ayuda a asignar estructuras JSON complejas a POJO de Java sin el tedio de tratar directamente con los propios objetos JSON nativos. En este caso simple, asignamos la clave src desde el objeto JSON image al atributo src en el POJO de imagen directamente a través de la anotación @JSONProperty.

package com.adobe.aem.guides.wknd.mobile.android.models;

import com.fasterxml.jackson.annotation.JsonProperty;

public class Image {
    @JsonProperty(value = "src")
    private String src;

    public String getSrc() {
        return src;
    }
}

El POJO de evento, que requiere la selección de muchos más puntos de datos del objeto JSON, se beneficia de esta técnica más que de la imagen simple, que solo queremos que sea src.

Explorar la experiencia de la aplicación móvil

AEM Ahora que comprende cómo los servicios de contenido de pueden impulsar la experiencia nativa en dispositivos móviles, utilice lo que ha aprendido para realizar los siguientes pasos y ver los cambios reflejados en la aplicación móvil.

Después de cada paso, tire de la aplicación móvil para actualizarla y verifique la actualización de la experiencia móvil.

  1. Crear y publicar nuevo Event fragmento de contenido
  2. Cancelar la publicación de un fragmento de contenido Event existente
  3. Publish puede actualizar la línea de etiquetas

Felicitaciones

AEM Ha completado el tutorial sin encabezado de la aplicación de la aplicación de la aplicación de la aplicación de seguridad de!

AEM AEM Para obtener más información acerca de los servicios de contenido de la y la configuración de un CMS sin encabezado, visite otra documentación y materiales de habilitación de Adobe:

recommendation-more-help
e25b6834-e87f-4ff3-ba56-4cd16cdfdec4