Engage SDK Health and Fitness: サードパーティの技術的統合手順

Google は、ユーザーのアプリをカテゴリ別に整理し、没入感のある新しいエクスペリエンスによってアプリ コンテンツの使用や発見をパーソナライズできるオンデバイス サーフェスを構築しています。この全画面エクスペリエンスにより、デベロッパー パートナーは、アプリ外の専用チャンネルで優れたリッチ コンテンツを紹介できます。このガイドでは、Engage SDK を使用してこの新しいサーフェス領域にコンテンツを表示することで、健康とフィットネスのコンテンツを統合する手順について説明します。

統合の詳細

用語

この統合には、おすすめコンテンツ注目コンテンツ継続の 3 種類のクラスタがあります。

  • おすすめコンテンツ クラスタには、個々のデベロッパー パートナーが提供する、パーソナライズされた健康とフィットネスに関するおすすめ情報が表示されます。これらのおすすめは、ユーザーに合わせてパーソナライズすることも、一般的なもの(フィットネスや健康のトレンドなど)にすることもできます。これらを使用して、健康とフィットネスに関連する記事や人物を表示します。

    • おすすめコンテンツ クラスタは ArticleEntityPersonEntityEventEntity のいずれかで構成できますが、異なるエンティティ タイプを組み合わせることはできません。

    おすすめコンテンツの構成は次のとおりです。

    • おすすめコンテンツ クラスタ: 同一のデベロッパー パートナーが提供するおすすめコンテンツのグループが表示される UI ビュー。

    • エンティティ: クラスタ内の単一のアイテムを表すオブジェクト。この統合により、おすすめコンテンツ クラスタで表示されるエンティティがいくつか提供されます。

      • ArticleEntity: ArticleEntity は、健康とフィットネスに関するテキストベースのコンテンツのレコメンデーションを表します。記事、ブログ投稿、マーケティング コンテンツ、ニュース スニペットなどに使用できます。

        図 1: おすすめコンテンツ クラスタ内に 1 つの ArticleEntity を表示する UI
      • PersonEntity: PersonEntity は、人物を表します。たとえば、コーチや、健康とフィットネスに関連する人物にスポットを当てることができます。

        図 2: おすすめコンテンツ クラスタ内の単一の PersonEntity を示す UI。
      • EventEntity: EventEntity は、今後発生するイベントを表します。イベントの開始時間は、ユーザーに伝達する必要がある重要な情報です。このエンティティは、献血キャンプ、トレーニング セッション、ジムやヨガのクラスなど、健康とフィットネスに関連するイベントを表示するために使用できます。

        図 3: おすすめコンテンツ クラスタ内の単一の EventEntity を表示する UI。
  • 継続クラスタでは、複数のデベロッパー パートナーが提供するユーザーが最近エンゲージメントを行ったコンテンツが、1 つの UI グループに表示されます。各デベロッパー パートナーは、継続クラスタで最大 10 個のエンティティをブロードキャストできます。

    継続コンテンツの構造は次のとおりです。

    • ArticleEntity: ArticleEntity は、健康とフィットネスに関連するテキストベースのコンテンツのレコメンデーションを表します。このエンティティは、閲覧途中のニュース記事や、ユーザーが続きから読みたいコンテンツを表す場合に使用できます。例: ニュース スニペット、健康やフィットネス関連のトピックに関するブログ投稿の抜粋。

      図 6. 継続クラスタ内の 1 つの ArticleEntity を表示している UI
    • EventReservationEntity: EventReservationEntity はイベントの予約を表し、ユーザーが今後または進行中のフィットネス イベントやヘルス イベントの予約を追跡するのに役立ちます。例: トレーニング セッション

      図 8. 継続クラスタ内の単一の EventReservationEntity を表示する UI
  • 注目コンテンツ クラスタは、多くのデベロッパー パートナーが提供する選んだヒーロー GenericFeaturedEntity を 1 つの UI グループに表示する UI ビューです。1 つの注目コンテンツ クラスタが UI の上部付近に、どのおすすめコンテンツ クラスタよりも優先されて表示されます。各デベロッパー パートナーは、サポートされているタイプのエンティティを注目コンテンツ クラスタ内に 1 つずつブロードキャストできます。注目コンテンツ クラスタには、複数のアプリ デベロッパーが提供する多数のエンティティ(複数種になる場合もあります)が表示されます。

    • GenericRecommendedEntity: GenericRecommendedEntity は、デベロッパーの 1 つのトップ コンテンツに対して使用し、ユーザーにとって興味深く関連性のある単一の最も重要なコンテンツを表す必要があるという点で、おすすめアイテムと異なります。

      図 12: 注目コンテンツ クラスタ内に 1 つのヒーロー GenericFavoriteEntity カードを表示する UI

事前作業

最小 API レベル: 19

アプリに com.google.android.play:engage ライブラリを追加します。

dependencies {
    // Make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.engage:engage-core:1.4.1'
}

概要

この設計は、バインドされたサービスの実装に基づいています。

クライアントが公開できるデータには、各種クラスタに関する次の上限が適用されます。

クラスタタイプ クラスタ数の上限 クラスタ内のエンティティ数の下限 クラスタ内のエンティティ数の上限
おすすめコンテンツ クラスタ 最大 5 個 5 以上 最大 25 個(ArticleEntityPersonEntity、または EventEntity
継続クラスタ 最大 1 個 1 以上 最大 10 個(ArticleEntity または EventReservationEntity
注目コンテンツ クラスタ 最大 1 個 1 以上 最大 10 個(GenericFeaturedEntity

ステップ 1: エンティティ データを提供する

この SDK では、各アイテムタイプを表すさまざまなエンティティを定義しています。健康 &フィットネス カテゴリでは、次のエンティティがサポートされています。

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. PersonEntity
  4. EventEntity
  5. EventReservationEntity

下記の表に、各タイプで使用可能な属性と、必須か任意かをまとめています。

GenericFeaturedEntity

属性 必須 / 任意 説明 形式
アクション URI 必須

プロバイダ アプリ内のエンティティへのディープリンク。

注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください

URI
ポスター画像 必須

複数の画像が指定されている場合、1 つの画像のみが表示されます。 推奨のアスペクト比は 16:9 です

注: バッジを使用する場合は、画像の上部と下部に 24 dps のセーフスペースを確保してください。

詳しくは、画像の仕様をご覧ください。
タイトル 任意 エンティティのタイトル。

自由形式のテキスト

推奨テキストサイズは 50 文字

説明 任意

エンティティを説明する 1 段落のテキスト。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

推奨テキストサイズは 180 文字

字幕リスト 任意

最大 3 つの字幕(各サブタイトルに 1 行のテキスト)。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

各サブタイトルの推奨テキストサイズ: 最大 50 文字

バッジ 任意

各バッジは、自由形式のテキスト(最大 15 文字)か小さい画像のいずれかです。

画像または動画上での特別な UX 処理(例: 画像にバッジを重ねて表示)

  • (「リアルタイム更新」
  • (記事の読み取り時間

バッジ - テキスト 任意

バッジのタイトル

注: バッジにはテキストまたは画像が必要です。

自由形式のテキスト

推奨テキストサイズは 15 文字以下

バッジ - 画像 任意

小さい画像

特別な UX 処理(画像/動画のサムネイルにバッジを重ねて表示するなど)。

注: バッジにはテキストまたは画像が必要です。

詳しくは、画像の仕様をご覧ください。
コンテンツ カテゴリ 任意 エンティティ内のコンテンツのカテゴリを記述します。

列挙型のリスト

詳しくは、コンテンツ カテゴリのセクションをご覧ください。

ArticleEntity

属性 必須 / 任意 説明 形式
アクション URI 必須

プロバイダ アプリ内のエンティティへのディープリンク。

注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください

URI
タイトル 必須 エンティティのタイトル。

自由形式のテキスト

推奨テキストサイズ: 最大 50 文字

ポスター画像 任意

複数の画像が指定されている場合、1 つの画像のみが表示されます。 推奨のアスペクト比は 16:9 です

注: 画像を使用することを強くおすすめします。バッジを使用する場合は、画像の上部と下部に 24 dp のセーフスペースを確保してください。

詳しくは、画像の仕様をご覧ください。
ソース - タイトル 任意 著者、組織、または報告者の名前

自由形式のテキスト

推奨テキストサイズは 25 文字未満

ソース - 画像 任意 著者、組織、記者などの情報源の画像 詳しくは、画像の仕様をご覧ください。
説明 任意

エンティティを説明する 1 段落のテキスト。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

推奨テキストサイズは 180 文字

字幕リスト 任意

最大 3 つの字幕(各サブタイトルに 1 行のテキスト)。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

各サブタイトルの推奨テキストサイズ: 最大 50 文字

バッジ 任意

各バッジは、自由形式のテキスト(最大 15 文字)か小さい画像のいずれかです。

画像または動画上での特別な UX 処理(例: 画像にバッジを重ねて表示)

  • (「リアルタイム更新」
  • (記事の読み取り時間

バッジ - テキスト 任意

バッジのタイトル

注: バッジにはテキストまたは画像が必要です。

自由形式のテキスト

推奨テキストサイズは 15 文字以下

バッジ - 画像 任意

小さい画像

特別な UX 処理(画像/動画のサムネイルにバッジを重ねて表示するなど)。

注: バッジにはテキストまたは画像が必要です。

詳しくは、画像の仕様をご覧ください。
コンテンツの公開時刻 任意 アプリでコンテンツが公開 / 更新されたときのエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
前回のエンゲージメント時間 条件付き必須

ユーザーが前回このエンティティを操作したときのエポック タイムスタンプ(ミリ秒単位)。

注: このエンティティが連続性クラスタの一部である場合、このフィールドは必須です。

エポック タイムスタンプ(ミリ秒)
進行状況の割合 条件付き必須

現在までにユーザーが消費したコンテンツ全体の割合。

注: このエンティティが連続性クラスタの一部である場合、このフィールドは必須です。

0 ~ 100 の int 値(両端を含む)。
コンテンツ カテゴリ 任意 エンティティ内のコンテンツのカテゴリを記述します。

列挙型のリスト

詳しくは、コンテンツ カテゴリのセクションをご覧ください。

PersonEntity

属性 必須 / 任意 説明 形式
アクション URI 必須

プロバイダ アプリ内のエンティティへのディープリンク。

注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください

URI
プロフィール - 名前 必須 プロフィール名または ID またはハンドル(「John Doe」、「@TeamPixel」など)。

文字列

推奨テキストサイズ: 最大 50 文字

プロフィール - アバター 必須

ユーザーのプロフィール写真またはアバター画像。

注: 1:1 の正方形の画像にする必要があります。

詳しくは、画像の仕様をご覧ください。
プロフィール - 追加のテキスト 任意 プロフィール ハンドルなどの自由形式のテキスト。

自由形式のテキスト

推奨テキストサイズ: 最大 15 文字

プロフィール - 追加の画像 任意 認証バッジなどの小さい画像。 詳しくは、画像の仕様をご覧ください。
ヘッダー画像 任意

複数の画像が指定されている場合、1 つの画像のみが表示されます。 推奨のアスペクト比は 16:9 です

注: 画像を使用することを強くおすすめします。バッジを使用する場合は、画像の上部と下部に 24 dp のセーフスペースを確保してください。

詳しくは、画像の仕様をご覧ください。
人気度 - 数 任意

ヘッダー画像を表します。プロフィール画像とは異なる画像を指定してください。 これは、作品に似た人物を目立たせるための追加の画像がある場合に使用できます。

注: 16:9 の画像にしてください。バッジを使用する場合は、画像の上部と下部に 24 dp のセーフスペースを確保してください。

文字列

推奨テキストサイズ: カウントとラベルを合わせて最大 20 文字

人気度 - 数量 任意

フォロワー数または人気度の値。

注: アプリがさまざまな表示サイズに合わせて大きな数値を最適化するロジックを処理したくない場合は、カウント値を指定してください。Count と Count Value の両方を指定した場合は、Count が使用されます。

詳細
人気度 - ラベル 任意 人気ラベルを表します(例: 「高評価」)。

文字列

推奨テキストサイズ: カウントとラベルを合わせて最大 20 文字

人気度 - ビジュアル 任意

インタラクションの目的を表します。例: 高評価アイコンや絵文字の画像。

複数の画像を指定できますが、すべてのフォーム ファクタにすべての画像が表示されるとは限りません。

注: 1:1 の正方形の画像を使用する必要があります。

詳しくは、画像の仕様をご覧ください。
評価 - 最高値 必須

段階別評価の最高値。

現在の評価値も指定する場合は必須です。

0.0 以上の数値。
評価 - 現在値 必須

段階別評価の現在の値。

評価の最高値も指定する場合は必須です。

0.0 以上の数値。
評価 - 件数 任意

エンティティの評価の件数。

注: この項目は、ユーザーへの表示方法をアプリが制御したい場合に指定します。ユーザーに表示できる簡潔な文字列を指定してください。たとえば、カウントが 1,000,000 の場合、小さいディスプレイ サイズで切り捨てられないように、1M などの略語を使用することを検討してください。

文字列
評価 - 件数 任意

エンティティの評価の件数。

注: 表示名のロジックをご自身で処理しない場合は、このフィールドを指定します。件数とカウント値の両方が存在する場合は、件数を使用してユーザーに表示されます。

詳細
場所 - 国 任意 その人物の所在地またはサービス提供中の国。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 市区町村 任意 その人物の所在地または勤務先の市区町村。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 表示住所 任意 その人の所在地またはサービス提供中の住所がユーザーに表示されます。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 住所 任意 その人の所在地または勤務地の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 都道府県 任意 その人物の所在地またはサービス提供地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

地域 - 郵便番号 任意 その人物の所在地または勤務地の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 周辺地域 任意 その人物の所在地またはサービス提供地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

バッジ 任意

各バッジは、自由形式のテキスト(最大 15 文字)か小さい画像のいずれかです。

バッジ - テキスト 任意

バッジのタイトル

注: バッジにはテキストまたは画像が必要です。

自由形式のテキスト

推奨テキストサイズは 15 文字以下

バッジ - 画像 任意

小さい画像

特別な UX 処理(画像/動画のサムネイルにバッジを重ねて表示するなど)。

注: バッジにはテキストまたは画像が必要です。

詳しくは、画像の仕様をご覧ください。
説明 任意

エンティティを説明する 1 段落のテキスト。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

推奨テキストサイズは 180 文字

字幕リスト 任意

最大 3 つの字幕(各サブタイトルに 1 行のテキスト)。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

各サブタイトルの推奨テキストサイズ: 最大 50 文字

コンテンツ カテゴリ 任意 エンティティ内のコンテンツのカテゴリを記述します。

有効な列挙型のリスト

  • TYPE_HEALTH_AND_FITENESS(例: ヨガ/フィットネス トレーナー)
  • TYPE_HOME_AND_AUTO(例: 配管工)
  • TYPE_SPORTS(例: Player)
  • データ型の DATING

詳しくは、コンテンツ カテゴリのセクションをご覧ください。

EventEntity

属性 必須 / 任意 説明 形式
アクション URI 必須

プロバイダ アプリ内のエンティティへのディープリンク。

注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください

URI
タイトル 必須 エンティティのタイトル。

文字列

推奨テキストサイズ: 最大 50 文字

開始時刻 必須

イベントの開始予定時間のエポック タイムスタンプ。

注: これはミリ秒単位で表されます。

エポック タイムスタンプ(ミリ秒)
イベントモード 必須

イベントがオンライン、対面、またはその両方で行われるかを示すフィールド。

列挙型: VIRTUAL、IN_PERSON、HYBRID
ポスター画像 必須

複数の画像が指定されている場合、1 つの画像のみが表示されます。 推奨のアスペクト比は 16:9 です

注: 画像を使用することを強くおすすめします。バッジを使用する場合は、画像の上部と下部に 24 dp のセーフスペースを確保してください。

詳しくは、画像の仕様をご覧ください。
場所 - 国 条件付き必須

イベントが行われる国。

注: これは、IN_PERSON または HYBRID のイベントに必要です。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 市区町村 条件付き必須

イベントが実施される都市。

注: これは、IN_PERSON または HYBRID のイベントに必要です。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 表示住所 条件付き必須

ユーザーに表示するイベント会場の住所または会場名。

注: これは、IN_PERSON または HYBRID のイベントに必要です。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 住所 任意 イベントが開催されている場所の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 都道府県 任意 イベントが開催されている州または都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

地域 - 郵便番号 任意 イベントを開催する場所の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 周辺地域 任意 イベントが開催されている地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

終了時間 任意

イベントの終了予定時刻のエポック タイムスタンプ。

注: これはミリ秒単位で表されます。

エポック タイムスタンプ(ミリ秒)
説明 任意

エンティティを説明する 1 段落のテキスト。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

推奨テキストサイズは 180 文字

字幕リスト 任意

最大 3 つの字幕(各サブタイトルに 1 行のテキスト)。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

各サブタイトルの推奨テキストサイズ: 最大 50 文字

バッジ 任意

各バッジは、自由形式のテキスト(最大 15 文字)か小さい画像のいずれかです。

バッジ - テキスト 任意

バッジのタイトル

注: バッジにはテキストまたは画像が必要です。

自由形式のテキスト

推奨テキストサイズは 15 文字以下

バッジ - 画像 任意

小さい画像

特別な UX 処理(画像/動画のサムネイルにバッジを重ねて表示するなど)。

注: バッジにはテキストまたは画像が必要です。

詳しくは、画像の仕様をご覧ください。
価格 - 現在の価格 条件付きで必須

イベントのチケットまたはパスの現在の価格。

取り消し線が引かれた価格を指定する場合は必須です。

自由形式のテキスト
価格 - StrikethroughPrice 任意 イベントのチケットまたはパスの元の価格。 自由形式のテキスト
価格のコールアウト 任意 プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格のコールアウト。

自由形式のテキスト

推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます)

コンテンツ カテゴリ 任意 エンティティ内のコンテンツのカテゴリを記述します。

有効な列挙型のリスト

  • TYPE_MOVIES_AND_TV_SHOWS(例: 映画館)
  • TYPE_DIGITAL_GAMES(e スポーツなど)
  • TYPE_music(例: コンサート)
  • TYPE_TRAVEL_AND_LOCAL(ツアー、フェスティバルなど)
  • TYPE_HEALTH_AND_FITENESS(例: ヨガのクラス)
  • TYPE_EDUCATION(クラスなど)
  • TYPE_SPORTS(例: サッカーの試合)
  • TYPE_DATING(例: ミートアップ)

詳しくは、コンテンツ カテゴリのセクションをご覧ください。

EventReservationEntity

属性 必須 / 任意 説明 形式
アクション URI 必須

プロバイダ アプリ内のエンティティへのディープリンク。

注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください

URI
タイトル 必須 エンティティのタイトル。

文字列

推奨テキストサイズ: 最大 50 文字

開始時刻 必須

イベントの開始予定時間のエポック タイムスタンプ。

注: これはミリ秒単位で表されます。

エポック タイムスタンプ(ミリ秒)
イベントモード 必須

イベントがオンライン、対面、またはその両方で行われるかを示すフィールド。

列挙型: VIRTUAL、IN_PERSON、HYBRID
場所 - 国 条件付き必須

イベントが行われる国。

注: これは、IN_PERSON または HYBRID のイベントに必要です。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 市区町村 条件付き必須

イベントが実施される都市。

注: これは、IN_PERSON または HYBRID のイベントに必要です。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 表示住所 条件付き必須

ユーザーに表示するイベント会場の住所または会場名。

注: これは、IN_PERSON または HYBRID のイベントに必要です。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 住所 任意 イベントが開催されている場所の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 都道府県 任意 イベントが開催されている州または都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

地域 - 郵便番号 任意 イベントを開催する場所の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

場所 - 周辺地域 任意 イベントが開催されている地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズは 20 文字以下

ポスター画像 任意

複数の画像が指定されている場合、1 つの画像のみが表示されます。 推奨のアスペクト比は 16:9 です

注: 画像を使用することを強くおすすめします。バッジを使用する場合は、画像の上部と下部に 24 dp のセーフスペースを確保してください。

詳しくは、画像の仕様をご覧ください。
終了時間 任意

イベントの終了予定時刻のエポック タイムスタンプ。

注: これはミリ秒単位で表されます。

エポック タイムスタンプ(ミリ秒)
サービス プロバイダ - 名前 任意

サービス プロバイダの名前。

注: サービス プロバイダにはテキストと画像が必要です。

自由形式のテキスト。例: イベントの主催者やツアーの名前
サービス プロバイダ - 画像 任意

サービス プロバイダのロゴや画像。

注: サービス プロバイダにはテキストと画像が必要です。

詳しくは、画像の仕様をご覧ください。
説明 任意

エンティティを説明する 1 段落のテキスト。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

推奨テキストサイズは 180 文字

字幕リスト 任意

最大 3 つの字幕(各サブタイトルに 1 行のテキスト)。

注: ユーザーには、説明リストまたは字幕リストの両方ではなく、いずれかが表示されます。

自由形式のテキスト

各サブタイトルの推奨テキストサイズ: 最大 50 文字

バッジ 任意

各バッジは、自由形式のテキスト(最大 15 文字)か小さい画像のいずれかです。

バッジ - テキスト 任意

バッジのタイトル

注: バッジにはテキストまたは画像が必要です。

自由形式のテキスト

推奨テキストサイズは 15 文字以下

バッジ - 画像 任意

小さい画像

特別な UX 処理(画像/動画のサムネイルにバッジを重ねて表示するなど)。

注: バッジにはテキストまたは画像が必要です。

詳しくは、画像の仕様をご覧ください。
予約 ID 任意 イベント予約の予約 ID。 自由形式のテキスト
価格 - 現在の価格 条件付きで必須

イベントのチケットまたはパスの現在の価格。

取り消し線が引かれた価格を指定する場合は必須です。

自由形式のテキスト
価格 - StrikethroughPrice 任意 イベントのチケットまたはパスの元の価格。 自由形式のテキスト
価格のコールアウト 任意 プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格のコールアウト。

自由形式のテキスト

推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます)

評価 - 最高値 任意

段階別評価の最高値。

現在の評価値も指定する場合は必須です。

0.0 以上の数値。
評価 - 現在値 任意

段階別評価の現在の値。

評価の最高値も指定する場合は必須です。

0.0 以上の数値。
評価 - 件数 任意

イベントの評価の件数。

注: この項目は、ユーザーへの表示方法をアプリが制御したい場合に指定します。ユーザーに表示できる簡潔な文字列を指定してください。たとえば、カウントが 1,000,000 の場合、小さいディスプレイ サイズで切り捨てられないように、1M などの略語を使用することを検討してください。

文字列
評価 - 件数 任意

イベントの評価の件数。

注: 表示名のロジックをご自身で処理しない場合は、このフィールドを指定します。件数とカウント値の両方が存在する場合は、件数を使用してユーザーに表示されます。

詳細
コンテンツ カテゴリ 任意 エンティティ内のコンテンツのカテゴリを記述します。

有効な列挙型のリスト

  • TYPE_MOVIES_AND_TV_SHOWS(例: 映画館)
  • TYPE_DIGITAL_GAMES(e スポーツなど)
  • TYPE_music(例: コンサート)
  • TYPE_TRAVEL_AND_LOCAL(ツアー、フェスティバルなど)
  • TYPE_HEALTH_AND_FITENESS(例: ヨガのクラス)
  • TYPE_EDUCATION(クラスなど)
  • TYPE_SPORTS(例: サッカーの試合)
  • TYPE_DATING(例: ミートアップ)

詳しくは、コンテンツ カテゴリのセクションをご覧ください。

画像の仕様

画像アセットに必要な仕様を次の表に示します。

アスペクト比 最小ピクセル数 推奨ピクセル数

スクエア(1×1)

推奨

300×300 1200×1200
横向き(1.91×1) 600×314 1200×628
縦向き(4×5) 480×600 960×1200

Google が画像にアクセスできるようにするため、画像は公開 CDN でホストする必要があります。

ファイル形式

PNG、JPG、静止 GIF、WebP

最大ファイルサイズ

5120 KB

その他の推奨事項

  • 画像のセーフエリア: 重要なコンテンツは、画像の中央 80% の範囲内に配置してください。
  • 透明な背景を使用して、ダークモードとライトモードの設定で画像が適切に表示されるようにします。

コンテンツ カテゴリ

コンテンツ カテゴリを使用すると、アプリは複数のカテゴリに属するコンテンツを公開できます。これにより、コンテンツが事前定義済みのカテゴリにマッピングされます。たとえば、以下のようになります。

  • TYPE_EDUCATION
  • TYPE_SPORTS
  • TYPE_MOVIES_AND_TV_SHOWS
  • TYPE_BOOKS
  • TYPE_AUDIOBOOKS
  • TYPE_MUSIC
  • TYPE_DIGITAL_GAMES
  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_HOME_AND_AUTO
  • TYPE_BUSINESS
  • TYPE_NEWS
  • TYPE_FOOD_AND_DRINK
  • TYPE_SHOPPING
  • TYPE_HEALTH_AND_FITENESS
  • TYPE_MEDICAL
  • TYPE_PARENTING
  • TYPE_DATING

Google が画像にアクセスできるようにするため、画像は公開 CDN でホストする必要があります。

コンテンツ カテゴリを使用するためのガイドライン

  1. ArticleEntityGenericRecommendedEntity などの一部のエンティティでは、どのコンテンツ カテゴリも使用できます。EventEntityEventReservationEntityPersonEntity などの他のエンティティの場合、これらのカテゴリのサブセットのみが対象となります。リストを入力する前に、エンティティ タイプに使用可能なカテゴリのリストを確認してください。
  2. 一部のコンテンツ カテゴリには、汎用エンティティと ContentCategory の組み合わせではなく、特定のエンティティ タイプを使用します。

    • TYPE_MOVIES_AND_TV_SHOWS - 汎用エンティティを使用する前に、スマートウォッチの統合ガイドでエンティティを確認してください。
    • TYPE_BOOKS - 汎用エンティティを使用する前に、EbookEntity を確認してください。
    • TYPE_AUDIOBOOKS - 汎用エンティティを使用する前に、AudiobookEntity を確認します。
    • TYPE_SHOPPING - 汎用エンティティを使用する前に、ShoppingEntity を確認してください。
    • TYPE_FOOD_AND_DRINK - 汎用エンティティを使用する前に、食品統合ガイドでエンティティを確認してください。
  3. ContentCategory フィールドは省略可能です。コンテンツが前述のカテゴリのいずれにも属していない場合は、空白のままにします。

  4. 複数のコンテンツ カテゴリを指定する場合は、コンテンツとの関連性が高い順に、最も関連性の高いコンテンツ カテゴリをリストの最初に配置してください。

ステップ 2: クラスタデータを提供する

WorkManager などを使用して、コンテンツ公開ジョブをバックグラウンドで実行し、定期的に、またはイベントごとに(ユーザーがアプリを開いたときや、カートに商品を追加したときなど)スケジュールを設定することをおすすめします。

AppEngagePublishClient はクラスタの公開を行います。

クライアントでクラスタを公開するには、次の API があります。

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

この API は、サービスを統合に使用できるかどうか、コンテンツをデバイスに表示できるかどうかを確認するために使用されます。

Kotlin


client.isServiceAvailable.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Handle IPC call success
        if(task.result) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
}

Java


client.isServiceAvailable().addOnCompleteListener(task - > {
    if (task.isSuccessful()) {
        // Handle success
        if(task.getResult()) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
});

publishRecommendationClusters

この API は、RecommendationCluster オブジェクトのリストを公開するために使用されます。

Kotlin


client.publishRecommendationClusters(
      PublishRecommendationClustersRequest.Builder()
        .addRecommendationCluster(
          RecommendationCluster.Builder()
            .addEntity(entity1)
            .addEntity(entity2)
            .setTitle("Top Picks For You")
            .build()
        )
        .build()
    )

Java


client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Top Picks For You")
                        .build())
                .build());

サービスがリクエストを受信すると、1 つのトランザクション内で次のアクションが行われます。

  • デベロッパー パートナーが提供した既存の RecommendationCluster データが削除されます。
  • リクエストのデータが解析されて、更新されたおすすめコンテンツ クラスタに保存されます。

エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

publishFeaturedCluster

この API は、FeaturedCluster オブジェクトのリストを公開するために使用されます。

Kotlin


client.publishFeaturedCluster(
    PublishFeaturedClusterRequest.Builder()
      .setFeaturedCluster(
        FeaturedCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java


client.publishFeaturedCluster(
            new PublishFeaturedClustersRequest.Builder()
                .addFeaturedCluster(
                    new FeaturedCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

サービスがリクエストを受信すると、1 つのトランザクション内で次のアクションが行われます。

  • デベロッパー パートナーが提供した既存の FeaturedCluster データが削除されます。
  • リクエストのデータが解析されて、更新された注目コンテンツ クラスタに保存されます。

エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

publishContinuationCluster

この API は、ContinuationCluster オブジェクトを公開するために使用されます。

Kotlin


client.publishContinuationCluster(
    PublishContinuationClusterRequest.Builder()
      .setContinuationCluster(
        ContinuationCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java


client.publishContinuationCluster(
            new PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    new ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

サービスがリクエストを受信すると、1 つのトランザクション内で次のアクションが行われます。

  • デベロッパー パートナーが提供した既存の ContinuationCluster データが削除されます。
  • リクエストのデータが解析されて、更新された継続クラスタに保存されます。

エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

publishUserAccountManagementRequest

この API は、ログインカードを公開するために使用されます。ログイン アクションにより、ユーザーをアプリのログインページに誘導し、アプリでコンテンツを公開(または、よりパーソナライズされたコンテンツを提供)できるようにします。

次のメタデータはログインカードの一部です。

属性 必須 / 任意 説明
アクション URI 必須 アクションへのディープリンク(アプリのログインページへの移動など)
画像 省略可 - 指定しない場合は、タイトルを指定する必要があります

カードに表示される画像

解像度 1264×712 でアスペクト比 16×9 の画像

タイトル 省略可 - 指定しない場合は、画像を指定する必要があります カード上のタイトル
アクション テキスト 任意 行動を促すフレーズ(ログインなど)で表示されるテキスト
字幕 任意 カードの字幕(省略可)

Kotlin


var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Java


SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

サービスがリクエストを受信すると、1 つのトランザクション内で次のアクションが行われます。

  • デベロッパー パートナーが提供した既存の UserAccountManagementCluster データが削除されます。
  • リクエストのデータが解析されて、更新済みのユーザー アカウント管理クラスタに保存されます。

エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

updatePublishStatus

ビジネス上のなんらかの理由で、どのクラスタも公開されていない場合は、updatePublishStatus API を使用して公開ステータスを更新することを強くおすすめします。公開ステータスの更新が必要な理由は:

  • ダッシュボードではこのステータスの値に基づいて、統合の健全性などの指標が追加されるため、コンテンツが公開されている(STATUS == PUBLISHED)場合でも公開ステータスを明示する必要があります。
  • コンテンツは未公開でも統合ステータスが壊れていなければ(STATUS == NOT_PUBLISHED)、アプリの健全性ダッシュボードでアラートがトリガーされるのを回避できます。未公開ステータスを明示することで、プロバイダにとって想定済みの理由からコンテンツが非公開であるという確認がとれます。
  • デベロッパーは、データの公開状況に関する情報を提供できます。
  • Google は、ステータス コードを使用して、ユーザーがアプリで特定のアクションを行うように促し、ユーザーがアプリのコンテンツを見たり、それを克服したりできるようにします。

利用可能な公開ステータス コードは、次のとおりです。

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,

// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,

// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,

// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,

// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,

// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,

// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,

// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER

ユーザーがログインしていないためにコンテンツが公開されていない場合は、ログインカードを公開することをおすすめします。なんらかの理由でプロバイダがログインカードを公開できない場合は、ステータス コード NOT_PUBLISHED_REQUIRES_SIGN_IN を使用して updatePublishStatus API を呼び出すことをおすすめします。

Kotlin


client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

Java


client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationClusters

この API は、おすすめコンテンツ クラスタのコンテンツを削除するために使用されます。

Kotlin


client.deleteRecommendationClusters()

Java


client.deleteRecommendationClusters();

サービスがリクエストを受信すると、おすすめコンテンツ クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

deleteFeaturedCluster

この API は、注目コンテンツ クラスタのコンテンツを削除するために使用されます。

Kotlin


client.deleteFeaturedCluster()

Java


client.deleteFeaturedCluster();

サービスがリクエストを受信すると、注目コンテンツ クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

deleteContinuationCluster

この API は、継続クラスタのコンテンツを削除するために使用されます。

Kotlin


client.deleteContinuationCluster()

Java


client.deleteContinuationCluster();

サービスがリクエストを受信すると、継続クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

deleteUserManagementCluster

この API は、ユーザー アカウント管理クラスタのコンテンツを削除するために使用されます。

Kotlin


client.deleteUserManagementCluster()

Java


client.deleteUserManagementCluster();

サービスがリクエストを受信すると、ユーザー アカウント管理クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

deleteClusters

この API は、特定のクラスタタイプのコンテンツを削除するために使用されます。

Kotlin


client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_CONTINUATION)
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      .build())

Java


client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_CONTINUATION)
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                .build());

サービスがリクエストを受信すると、指定したクラスタタイプに一致するすべてのクラスタから既存のデータが削除されます。クライアントは、1 つまたは複数のクラスタタイプを渡すこともできます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。

エラー処理

公開 API のタスク結果をリッスンすることで、フォローアップの処理を実行し、正常なタスクを復元して再送信できるようにすることを強くおすすめします。

Kotlin


client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

Java


client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

エラーは AppEngageException として返され、その原因はエラーコードとして含まれます。

エラーコード
SERVICE_NOT_FOUND そのデバイスではこのサービスを利用できません。
SERVICE_NOT_AVAILABLE サービスをそのデバイスで利用することはできますが、呼び出し時には利用できません(明示的に無効になっている場合など)。
SERVICE_CALL_EXECUTION_FAILURE スレッドに関する問題が発生し、タスクを実行できませんでした。その場合は再試行できます。
SERVICE_CALL_PERMISSION_DENIED 呼び出し元がサービスの呼び出しを行うことができません。
SERVICE_CALL_INVALID_ARGUMENT リクエストに無効なデータが含まれています(クラスタ数が許容数を超えているなど)。
SERVICE_CALL_INTERNAL サービス側でエラーが発生しています。
SERVICE_CALL_RESOURCE_EXHAUSTED サービスの呼び出し頻度が高すぎます。

ステップ 3: ブロードキャスト インテントを処理する

ジョブを介してコンテンツ公開 API の呼び出しを行うだけでなく、コンテンツ公開のリクエストを受信するために BroadcastReceiver を設定する必要もあります。

ブロードキャスト インテントの主目的は、アプリの再有効化とデータ同期の強制です。ブロードキャスト インテントは、頻繁に送信されることを想定した設計にはなっていません。Engage のサービスが、コンテンツが古い可能性がある(1 週間前など)と判断した場合にのみトリガーされます。そうすることで、アプリが長時間実行されていない場合でも、より確実にユーザーに新しいコンテンツを提供できます。

BroadcastReceiver は、次の 2 つの方法で設定する必要があります。

  • Context.registerReceiver() を使用して、BroadcastReceiver クラスのインスタンスを動的に登録します。これにより、メモリ内でまだアクティブになっているアプリからの通信が可能になります。

Kotlin

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
  // is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
  // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
  // received
}

fun registerBroadcastReceivers(context: Context){
  var  context = context
  context = context.applicationContext

// Register Recommendation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION))

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED))

// Register Continuation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION))
}

Java

class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION));

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED));

// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION));

}
  • AndroidManifest.xml ファイルで <receiver> タグを使用して、実装を静的に宣言します。これにより、アプリが実行されていないときでもブロードキャスト インテントを受信し、コンテンツを公開できるようになります。
<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
      </intent-filter>
   </receiver>
</application>

次のインテントがサービスによって送信されます。

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION: このインテントを受信したときに、publishRecommendationClusters の呼び出しを開始することをおすすめします。
  • com.google.android.engage.action.PUBLISH_FEATURED: このインテントを受信したときに、publishFeaturedCluster の呼び出しを開始することをおすすめします。
  • com.google.android.engage.action.PUBLISH_CONTINUATION: このインテントを受信したときに、publishContinuationCluster の呼び出しを開始することをおすすめします。

統合ワークフロー

統合完了後に検証を行う手順のガイドについては、デベロッパー向けの Engage 統合ワークフローをご覧ください。

よくある質問

よくある質問については、Engage SDK に関するよくある質問をご覧ください。

お問い合わせ

統合プロセスについてご不明な点がありましたら、engage-developers@google.com までお問い合わせください。

次のステップ

この統合が完了した後のステップは次のとおりです。

  • Google によるテストの準備が整った統合済みの APK を添付して、engage-developers@google.com にメールを送信します。
  • Google 内部で検証と審査を行い、想定どおりに統合が機能するかどうかを確認します。変更が必要な場合は、Google から必要な詳細事項をご連絡します。
  • テストが完了し、変更の必要もない場合は、更新された統合済みの APK を Google Play ストアに公開できるようになったことを Google からお知らせします。
  • 更新された APK が Google Play ストアに公開されていることを Google が確認したら、おすすめコンテンツ注目コンテンツ連続性の各クラスタが公開され、ユーザーに表示されます。