Android アプリ

サンプルアプリケーションは、Adobe Experience Manager(AEM) のヘッドレス機能を調べる優れた方法です。 AEMの GraphQL API を使用してコンテンツをクエリする方法を示す Android アプリケーションが提供されます。 10. AEM Headless Client for Java は、GraphQL クエリを実行し、データを Java オブジェクトにマッピングしてアプリを強化するために使用されます。

表示 GitHub のソースコード

前提条件

次のツールは、ローカルにインストールする必要があります。

AEM要件

アプリケーションは、AEMに接続するように設計されています 公開 最新リリースの WKND リファレンスサイト インストール済み

推奨 WKND リファレンスサイトのCloud Service環境へのデプロイ. を使用したローカル設定 AEM Cloud Service SDK または AEM 6.5 QuickStart jar また、を使用することもできます。

使用方法

  1. aem-guides-wknd-graphql リポジトリ:

    git clone git@github.com:adobe/aem-guides-wknd-graphql.git
    
  2. Launch Android Studio フォルダを開きます。 android-app

  3. ファイルの変更 config.properties at app/src/main/assets/config.properties およびの更新 contentApi.endpoint ターゲットAEM環境に合わせるには:

    contentApi.endpoint=http://10.0.2.2:4502
    contentApi.user=admin
    contentApi.password=admin
    
  4. ダウンロード Android 仮想デバイス (最小 API 28)

  5. Android エミュレーターを使用してアプリをビルドし、デプロイします。

AEM環境への接続

10.0.2.2特別別名 (エミュレーターを使用する場合) So 10.0.2.2:4502 はと同じです。 localhost:4502. AEMパブリッシュ環境に接続する場合(推奨)、認証は必要なく、 contentAPi.user および contentApi.password は空白のままにできます。

AEMオーサー環境に接続する場合 認証 が必要です。 デフォルトでは、アプリケーションは、ユーザー名とパスワードがの基本認証を使用するように設定されています。 admin:admin. 10. AEMHeadlessClientBuilder は、 トークンベースの認証. でトークンベースの認証を使用するには、Update Client Builder を AdventureLoader.java および 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)

コード

以下に、アプリケーションの強化に使用する重要なファイルとコードの概要を示します。 完全なコードは、 GitHub.

コンテンツの取得

​10. AEM Headless Client for Java は、アプリでAEMに対して GraphQL クエリを実行し、アドベンチャーコンテンツをアプリに読み込むために使用されます。

AdventuresLoader.java は、アプリケーションのホーム画面で Adventures の初期リストを取得して読み込むファイルです。 これは、 永続クエリ これは プリパッケージ と WKND リファレンスサイトの両方に表示されます。 エンドポイントは /wknd/adventures-all. AEMHeadlessClientBuilder で設定された api エンドポイントに基づいて、新しいインスタンスをインスタンス化します。 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 は、各詳細ビューのアドベンチャーコンテンツを取得して読み込むファイルです。 再び AEMHeadlessClient は、クエリの実行に使用されます。 通常の graphQL クエリは、アドベンチャーコンテンツフラグメントへのパスに基づいて実行されます。 クエリは、 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 は、GraphQL 要求の JSON データで初期化される POJO です。

RemoteImagesCache.java は、Android の UI 要素で使用できるように、キャッシュ内にリモート画像を準備するのに役立つユーティリティクラスです。 アドベンチャーコンテンツは、URL を介してAEM Assets内の画像を参照し、このクラスを使用してそのコンテンツを表示します。

表示

AdventureListFragment.java — を呼び出すと、トリガー AdventuresLoader 返された冒険をリストに表示します。

AdventureDetailFragment.java — 初期化 AdventureLoader そして一つの冒険の詳細を表示する

その他のリソース

このページ