Aplicación de Android
[AEM sin encabezado as a Cloud Service]{class="badge informative"}
Las aplicaciones de ejemplo son una buena manera de explorar las capacidades sin encabezado de Adobe Experience Manager AEM (). Esta aplicación para Android muestra cómo realizar consultas en el contenido mediante las API de GraphQL AEM de la interfaz de usuario de la aplicación de. El AEM Cliente sin encabezado para Java se utiliza para ejecutar las consultas de GraphQL y asignar datos a objetos Java para activar la aplicación.
Ver el código fuente en GitHub
Requisitos previos prerequisites
Las siguientes herramientas deben instalarse localmente:
AEM requisitos de
AEM La aplicación de Android funciona con las siguientes opciones de implementación de. Todas las implementaciones requieren lo siguiente Sitio WKND 3.0.0+ para instalar.
La aplicación de Android está diseñada para conectarse a un AEM Publicación de AEM , sin embargo, puede obtener contenido de Autor de la fuente si se proporciona autenticación en la configuración de la aplicación de Android.
Cómo usar
-
Clonar el
adobe/aem-guides-wknd-graphql
repositorio:code language-shell $ git clone git@github.com:adobe/aem-guides-wknd-graphql.git
-
Abrir Android Studio y abra la carpeta
android-app
-
Modificación del archivo
config.properties
enapp/src/main/assets/config.properties
y actualizarcontentApi.endpoint
AEM para que coincida con su entorno de destino haga lo siguiente:code language-plain contentApi.endpoint=https://publish-p123-e456.adobeaemcloud.com
Autenticación básica
El
contentApi.user
ycontentApi.password
AEM autentique un usuario local de la con acceso al contenido de WKND GraphQL.code language-plain contentApi.endpoint=https://author-p123-e456.adobeaemcloud.com contentApi.user=my-special-android-app-user contentApi.password=password123
-
Descargar un Dispositivo virtual Android (API mínima 28).
-
Cree e implemente la aplicación mediante el emulador de Android.
AEM Conexión a entornos de
AEM Si se conecta a un entorno de autor de autorización es obligatorio. El AEMHeadlessClientBuilder proporciona la capacidad de usar autenticación basada en token. Para usar el generador de cliente de actualización de autenticación basada en tokens en AdventureLoader.java
y AdventuresLoader.java
:
/* Comment out basicAuth
if (user != null && password != null) {
builder.basicAuth(user, password);
}
*/
// use token-authentication where `token` is a String representing the token
builder.tokenAuth(token)
El código
A continuación se muestra un breve resumen de los archivos y el código importantes utilizados para activar la aplicación. El código completo se encuentra en GitHub.
Consultas persistentes
AEM Siguiendo las prácticas recomendadas de las consultas sin encabezado, la aplicación de iOS AEM utiliza consultas persistentes de GraphQL para consultar datos de aventuras, de forma predeterminada, de la manera más sencilla. La aplicación utiliza dos consultas persistentes:
wknd/adventures-all
AEM consulta persistente, que devuelve todas las aventuras en con un conjunto abreviado de propiedades de, que se han guardado de forma predeterminada. Esta consulta persistente genera la lista de aventuras de la vista inicial.
# Retrieves a list of all adventures
{
adventureList {
items {
_path
slug
title
price
tripLength
primaryImage {
... on ImageRef {
_dynamicUrl
_path
}
}
}
}
}
wknd/adventure-by-slug
consulta persistente, que devuelve una sola aventura deslug
(una propiedad personalizada que identifica de forma exclusiva una aventura) con un conjunto completo de propiedades. Esta consulta persistente activa las vistas de detalles de aventura.
# Retrieves an adventure Content Fragment based on it's slug
# Example query variables:
# {"slug": "bali-surf-camp"}
# Technically returns an adventure list but since the the slug
# property is set to be unique in the CF Model, only a single CF is expected
query($slug: String!) {
adventureList(filter: {
slug: {
_expressions: [ { value: $slug } ]
}
}) {
items {
_path
title
slug
activity
adventureType
price
tripLength
groupSize
difficulty
price
primaryImage {
... on ImageRef {
_dynamicUrl
_path
}
}
description {
json
plaintext
}
itinerary {
json
plaintext
}
}
_references {
...on AdventureModel {
_path
slug
title
price
__typename
}
}
}
}
Ejecutar consulta persistente de GraphQL
AEM Las consultas persistentes se ejecutan a través de la GET HTTP y, por lo tanto, la variable AEM Cliente sin encabezado para Java se utiliza para ejecutar las consultas de GraphQL AEM persistentes contra los datos de la aplicación y cargar el contenido de la aventura en la aplicación.
AEM Cada consulta persistente tiene una clase de "cargador" correspondiente, que llama asincrónicamente al punto final de GET HTTP de la y devuelve los datos de la aventura utilizando el personalizado definido modelo de datos.
-
loader/AdventuresLoader.java
Obtiene la lista de Aventuras en la pantalla principal de la aplicación utilizando
wknd-shared/adventures-all
consulta persistente. -
loader/AdventureLoader.java
Obtiene una sola aventura seleccionándola a través de la
slug
parámetro, con el parámetrowknd-shared/adventure-by-slug
consulta persistente.
//AdventuresLoader.java
public static final String PERSISTED_QUERY_NAME = "/wknd-shared/adventures-all";
...
AEMHeadlessClientBuilder builder = AEMHeadlessClient.builder().endpoint(config.getContentApiEndpoint());
// Optional authentication for basic auth
String user = config.getContentApiUser();
String password = config.getContentApiPassword();
if (user != null && password != null) {
builder.basicAuth(user, password);
}
AEMHeadlessClient client = builder.build();
// run a persistent query and get a response
GraphQlResponse response = client.runPersistedQuery(PERSISTED_QUERY_NAME);
Modelos de datos de respuesta de GraphQL data-models
Adventure.java
es un POJO de Java que se inicializa con los datos JSON de la petición GraphQL y modela una aventura para usarla en las vistas de la aplicación Android.
Vistas
La aplicación para Android utiliza dos vistas para presentar los datos de la aventura en la experiencia móvil.
-
AdventureListFragment.java
Invoca el
AdventuresLoader
y muestra las aventuras devueltas en una lista. -
AdventureDetailFragment.java
Invoca el
AdventureLoader
uso delslug
parámetro pasado a través de la selección de aventuras enAdventureListFragment
y muestra los detalles de una sola aventura.
Imágenes remotas
loader/RemoteImagesCache.java
es una clase de utilidad que ayuda a preparar imágenes remotas en una caché para que se puedan utilizar con elementos de la IU de Android. El contenido de aventura hace referencia a imágenes en AEM Assets a través de una dirección URL y esta clase se utiliza para mostrar ese contenido.