AEM El capítulo 7 del tutorial utiliza una aplicación móvil nativa de Android para consumir contenido de los servicios de contenido de los servicios de contenido de la aplicación de la aplicación de contenido de.
Este tutorial utiliza un aplicación móvil nativa simple de Android AEM para consumir y mostrar el contenido de evento expuesto por los servicios de contenido de.
El uso de Android no es importante en gran medida, y la aplicación móvil consumidora podría escribirse en cualquier marco de trabajo para cualquier plataforma móvil, por ejemplo iOS.
AEM Android se utiliza para el tutorial debido a la capacidad de ejecutar un emulador de Android 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 es noAEM tiene la intención de instruir cómo crear aplicaciones móviles de Android o transmitir las prácticas recomendadas de desarrollo de Android, sino más bien ilustrar cómo se pueden consumir los servicios de contenido de desde una aplicación móvil.
Si AEM Publish no se está ejecutando en http://localhost:4503 el host y el puerto se pueden actualizar en el Settings para señalar a la propiedad Host/puerto de publicación de AEM.
AEM Esta sección resalta el código de la aplicación móvil de Android que más interactúa y depende de los servicios de contenido y de su salida JSON.
Al cargar, la aplicación móvil realiza lo siguiente HTTP GET
hasta /content/wknd-mobile/en/api/events.model.json
AEM que es el punto final de Content Services de configurado para proporcionar el contenido que dirigirá 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á bloqueado, la aplicación móvil se puede codificar para buscar información específica en ubicaciones específicas en la respuesta JSON.
HTTP GET
Solicitud de publicación de AEM 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.A continuación se muestra una destilación del código en el MainActivity
AEM es responsable de invocar los servicios de contenido de 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 los 3 ViewBinders
responsable de analizar el JSON y enlazar los valores al View
elementos.
initApp(...)
A continuación, se llama a, que realiza la solicitud de GET AEM HTTP al punto final de los servicios de contenido de la aplicación en AEM Publish para recopilar el contenido. Al recibir una respuesta JSON válida, la respuesta JSON se pasa a cada ViewBinder
que es responsable de analizar el JSON y enlazarlo al dispositivo móvil View
elementos.
A continuación, veremos el 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");
}
}
}
La primera línea de bind(...)
navega hacia abajo en la respuesta JSON a través de las teclas :items → root → :items AEM 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 imagen, que representa el componente Imagen (de nuevo, es importante que este nombre de nodo → clave JSON sea estable). Si este objeto existe, se lee y se asigna al POJO de imagen personalizado a través de Jackson ObjectMapper
biblioteca. El POJO de imagen se explora a continuación.
Por último, el logotipo de src
se carga en la ImageView de Android mediante la variable Glide biblioteca de ayuda.
AEM Tenga en cuenta que debemos proporcionar el esquema, el host y el puerto de la (a través de ). aemHost
AEM ) a la instancia de publicación de AEM, ya que los servicios de contenido solo proporcionan la ruta JCR (es decir, /content/dam/wknd-mobile/images/wknd-logo.png
) al contenido referenciado.
Si bien es opcional, el uso de la variable Jackson ObjectMapper o funciones 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 sencillo asignamos el src
clave de la image
Objeto JSON, al src
en el POJO de imagen directamente a través de @JSONProperty
anotación.
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 simple imagen, que todo lo que queremos es la src
.
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.
AEM ¡Ha completado el tutorial sin encabezado de la!
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: