App Android

Le applicazioni di esempio sono un ottimo modo per esplorare le funzionalità headless di Adobe Experience Manager (AEM). Viene fornita un'applicazione Android che dimostra come eseguire query sul contenuto utilizzando le API GraphQL di AEM. La Client AEM headless per Java viene utilizzato per eseguire le query GraphQL e mappare i dati su oggetti Java per alimentare l'app.

Visualizza la codice sorgente su GitHub

Prerequisiti

È necessario installare localmente i seguenti strumenti:

Requisiti AEM

L'applicazione è progettata per connettersi a un AEM Pubblica ambiente con la versione più recente del Sito di riferimento WKND installato.

Consigliamo distribuzione del sito WKND Reference in un ambiente di Cloud Service. Impostazione locale tramite l’SDK di AEM Cloud Service o AEM 6.5 QuickStart jar può essere utilizzato anche.

Come utilizzare

  1. Clona il aem-guides-wknd-graphql archivio:

    git clone git@github.com:adobe/aem-guides-wknd-graphql.git
    
  2. Launch Android Studio e apri la cartella android-app

  3. Modificare il file config.properties a app/src/main/assets/config.properties e aggiorna contentApi.endpoint per far corrispondere l’ambiente AEM di destinazione:

    contentApi.endpoint=http://10.0.2.2:4502
    contentApi.user=admin
    contentApi.password=admin
    
  4. Scaricare un Dispositivo virtuale Android (API min 28)

  5. Crea e distribuisci l’app utilizzando l’emulatore Android.

Connessione ad ambienti AEM

10.0.2.2 è un alias speciale per localhost quando si utilizza l'emulatore. Quindi 10.0.2.2:4502 equivale a localhost:4502. Se ci si connette a un ambiente di pubblicazione AEM (consigliato), non è necessaria alcuna autorizzazione e contentAPi.user e contentApi.password può essere lasciato vuoto.

Connessione a un ambiente di authoring AEM autorizzazione è obbligatorio. Per impostazione predefinita, l’applicazione è configurata per utilizzare l’autenticazione di base con un nome utente e una password di admin:admin. La AEMHeadlessClientBuilder consente di utilizzare autenticazione basata su token. Per utilizzare il generatore client di aggiornamento dell’autenticazione basato su token in AdventureLoader.java e 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)

Il codice

Di seguito è riportato un breve riepilogo dei file importanti e del codice utilizzati per alimentare l'applicazione. Il codice completo è disponibile all'indirizzo GitHub.

Recupero contenuto

La Client AEM headless per Java viene utilizzato dall’app per eseguire la query GraphQL su AEM e caricare il contenuto dell’avventura nell’app.

AdventuresLoader.java è il file che recupera e carica l’elenco iniziale di Avventure nella schermata iniziale dell’applicazione. Utilizza Query persistenti che preconfezionato con il sito di riferimento WKND. L'endpoint è /wknd/adventures-all. AEMHeadlessClientBuilder crea un'istanza nuova in base all'endpoint api impostato in config.properties.

//AdventuresLoader.java

public static final String PERSISTED_QUERY_NAME = "/wknd/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);

AdventureLoader.java è il file che recupera e carica il contenuto Avventura per ciascuna visualizzazione di dettaglio. Ancora una volta AEMHeadlessClient viene utilizzato per eseguire la query. Viene eseguita una normale query GraphQL in base al percorso del frammento di contenuto Adventure. La query viene mantenuta in un file separato denominato adventureByPath.query

AEMHeadlessClientBuilder builder = AEMHeadlessClient.builder().endpoint(config.getContentApiEndpoint());
String user = config.getContentApiUser();
String password = config.getContentApiPassword();
if (user != null && password != null) {
    builder.basicAuth(user, password);
}
AEMHeadlessClient client = builder.build();

// based on the file adventureByPath.query
String query = readFile(getContext(), QUERY_FILE_NAME);

// construct a parameter map to dynamically pass in adventure path
Map<String, Object> params = new HashMap<>();
params.put("adventurePath", this.path);

// execute the query based on the adventureByPath query and passed in parameters
GraphQlResponse response = client.runQuery(query, params);

Adventure.java è un POJO che viene inizializzato con i dati JSON dalla richiesta GraphQL.

RemoteImagesCache.java è una classe di utilità che aiuta a preparare le immagini remote in una cache in modo che possano essere utilizzate con gli elementi dell'interfaccia utente Android. Il contenuto Adventure fa riferimento alle immagini in AEM Assets tramite un URL e questa classe viene utilizzata per visualizzare tale contenuto.

Viste

AdventureListFragment.java - quando viene chiamato , viene attivato il AdventuresLoader e visualizza le avventure restituite in un elenco.

AdventureDetailFragment.java - inizializza AdventureLoader e visualizza i dettagli di una singola avventura.

Risorse aggiuntive

In questa pagina