Engage SDK Other Verticals: サードパーティの技術的統合手順

ユーザーがどこにいてもリーチして、アプリ エンゲージメントを向上させましょう。Engage SDK を統合すると、コレクション、エンターテイメント スペース、Google Play ストアなど、複数のオンデバイス サーフェスで、パーソナライズされたおすすめ表示やコンテンツの続きをユーザーの手元へ直接届けることができます。統合により、平均的な APK に追加されるサイズは 50 KB(圧縮)未満であり、ほとんどのアプリで開発者の作業時間は 1 週間程度です。詳しくは、ビジネスサイトをご覧ください。

このドキュメントでは、デベロッパー パートナーが、予約、イベント、宿泊施設、観光スポット、人物などの新しいコンテンツや、これらのカテゴリに属さないその他のコンテンツを統合する手順を説明します。

統合の詳細

このセクションでは、他のコンテンツ カテゴリの Engage SDK と統合するために必要な手順、データモデル、用語について詳しく説明します。

用語

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

  • おすすめコンテンツ クラスタには、特定のデベロッパー パートナーが提供する、パーソナライズされたおすすめ情報が表示されます。同一のデベロッパー パートナーが提供するおすすめコンテンツのグループが表示される UI ビューです。

    • ArticleEntity: 複数のカテゴリのコンテンツに関連するコンテンツのテキストベースのレコメンデーションを表す ArticleEntity。ArticleEntity アイテムを使用すると、デベロッパーは、GenericFeaturedEntity と比較して、より多くのメタデータを含むさまざまなテキストや画像コンテンツを提供して、ユーザーに情報を明確に伝えることができます。例: マーケティング コンテンツ、ニュース スニペット

      図 1: おすすめコンテンツ クラスタ内の 1 つの ArticleEntity を表示する UI。
    • EventEntity: EventEntity は、将来発生するイベントを表します。イベントの開始時間は、ユーザーに伝える必要がある重要な情報です。

      図 2: おすすめコンテンツ クラスタ内の 1 つの EventEntity を表示する UI。
    • LodgingEntity: LodgingEntity は、ホテル、アパート・マンション、短期および長期の賃貸用の別荘などの宿泊施設を表します。

      図 3: おすすめコンテンツ クラスタ内の 1 つの LodgingEntity を表示する UI。
    • StoreEntity: StoreEntity は、店舗、レストラン、カフェなどを表します。飲食店や店舗が、ユーザーに伝える必要のある重要な情報であるコンテンツをハイライト表示します。

      図 4: おすすめコンテンツ クラスタ内の 1 つの StoreEntity を表示する UI。
    • PointOfInterestEntity: PointOfInterestEntity は、ガソリン スタンド、イベント会場、テーマパーク、美術館、観光名所、ハイキング コースなどのスポットを表します。場所がユーザーに伝える必要がある重要な情報であるコンテンツをハイライト表示します。宿泊施設、店舗、飲食店には使用しないでください。

      図 5: おすすめコンテンツ クラスタ内の PointOfInterestEntity が 1 つ表示されている UI。
    • PersonEntity: PersonEntity は人物を表します。おすすめには、健康とフィットネス、スポーツ、出会い系などのカテゴリで人物をハイライト表示することがあります。

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

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

    • ArticleEntity: 複数のカテゴリのコンテンツに関連するコンテンツのテキストベースのレコメンデーションを表す ArticleEntity。このエンティティは、未完成のニュース記事や、ユーザーが中断したところから再開したいその他のコンテンツを表すために使用できます。例: マーケティング コンテンツ、ニュース スニペット

      図 6. 継続クラスタ内の 1 つの ArticleEntity を表示する UI。
    • RestaurantReservationEntity: RestaurantReservationEntity は、レストランやカフェの予約を表し、ユーザーが今後のレストラン予約や進行中のレストラン予約を追跡できるようにします。

      図 7. 継続クラスタ内の単一の RestaurantReservationEntity を示す UI。
    • EventReservationEntity: EventReservationEntity は、イベントの予約を表し、ユーザーが今後のイベント予約や進行中のイベント予約を追跡するのに役立ちます。イベントには、次のようなものがあります(ただし、これらに限定されません)。

      • サッカーの試合の予約などのスポーツ イベント
      • e スポーツの予約などのゲームイベント
      • 映画館での映画の予約、コンサート、劇場、サイン会などのエンターテイメント イベント
      • ガイドツアー、美術館のチケットなどの旅行や観光スポットの予約
      • ソーシャル / セミナー / 会議の予約
      • 教育 / トレーニング セッションの予約
      図 8. 継続クラスタ内の単一の EventReservationEntity を表示する UI。
    • LodgingReservationEntity: LodgingEntityReservation は、旅行の宿泊施設の予約を表し、ユーザーが今後のホテルや民泊の予約、または進行中の予約を追跡できるようにします。

      図 9. 継続クラスタ内の LodgingReservationEntity が 1 つ表示されている UI。
    • TransportationReservationEntity: TransportationReservationEntity は、あらゆる手段による交通機関の予約を表し、ユーザーが今後のフライト、フェリー、列車、バス、配車サービス、クルーズの予約を追跡できるようにします。

      図 10. 継続クラスタ内の単一の TransportationReservationEntity を示す UI。
    • VehicleRentalReservationEntity: VehicleRentalReservationEntity は、レンタカーの予約を表し、ユーザーが今後のレンタカー予約や進行中のレンタカー予約を追跡できるようにします。

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

    • GenericFeaturedEntity: GenericFeaturedEntity は、デベロッパーが提供する単一のトップ コンテンツに使用され、ユーザーにとって興味深く関連性の高い、最も重要な単一のコンテンツを表す必要があるという点で、レコメンデーション アイテムとは異なります。

      図 12: 注目のクラスタ内に単一のヒーロー GenericFeaturedEntity カードを表示する UI

事前作業

最小 API レベル: 19

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

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

概要

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

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

クラスタタイプ クラスタ数の上限 クラスタ内のエンティティ数の下限 クラスタ内のエンティティ数の上限
おすすめコンテンツ クラスタ 最大 7 個 少なくとも 1 個 最大 50 個(ArticleEntity、EventEntity、LodgingEntity、StoreEntity、PointOfInterestEntity、PersonEntity)
継続クラスタ 最大 1 個 少なくとも 1 個 最大 20 個(ArticleEntity、EventReservationEntity、LodgingReservationEntity、TransportationReservationEntity、または VehicleRentalReservationEntity)
注目コンテンツ クラスタ 最大 1 個 少なくとも 1 個 最大 20 個(GenericFeaturedEntity)

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

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

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. EventEntity
  4. LodgingEntity
  5. StoreEntity
  6. PointOfInterestEntity
  7. PersonEntity
  8. RestaurantReservationEntity
  9. EventReservationEntity
  10. LodgingReservationEntity
  11. TransportationReservationEntity
  12. VehicleRentalReservationEntity

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

GenericFeaturedEntity

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

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

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

URI
ポスター画像 必須

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

注: バッジが提供されている場合は、画像の上下に 24 dp のセーフスペースを確保してください。

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

自由形式のテキスト

推奨テキストサイズ: 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 の整数値(両端を含む)。
コンテンツ カテゴリ 省略可 エンティティ内のコンテンツのカテゴリを記述します。

列挙型のリスト

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

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 処理(画像/動画のサムネイルにバッジをオーバーレイするなど)。

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

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

イベントのチケット/パスの現在の価格。

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

自由形式のテキスト
Price - 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(例: meetup)

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

LodgingEntity

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

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

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

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

文字列

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

ポスター画像 必須

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

注: バッジが提供されている場合は、画像の上下に 24 dp のセーフスペースを確保してください。

詳しくは、画像の仕様をご覧ください。
地域 - 国 必須 宿泊施設がある国。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 市区町村 必須 宿泊施設がある都市。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

位置情報 - 住所を表示 必須 ユーザーに表示される宿泊施設の住所。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 番地 省略可 宿泊施設の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

地域 - 州 省略可 宿泊施設が所在する都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

地域 - 郵便番号 省略可 宿泊施設の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 近隣 省略可 宿泊施設の近隣地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

バッジ 省略可

各バッジは、フリーテキスト(最大 15 文字)または小さな画像です。

バッジ - テキスト 省略可

バッジのタイトル

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

自由形式のテキスト

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

バッジ - 画像 省略可

小さい画像

特別な UX 処理(画像/動画のサムネイルにバッジをオーバーレイするなど)。

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

詳しくは、画像の仕様をご覧ください。
説明 省略可

エンティティを説明する 1 つの段落。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

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

字幕リスト 省略可

最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

各字幕の推奨テキストサイズは最大 50 文字

AvailabilityTimeWindow - 開始時間 省略可 宿泊施設が営業/利用可能になると予想されるエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
AvailabilityTimeWindow - 終了時刻 省略可 宿泊施設が営業/利用可能であると予想されるエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
評価 - 最高値 省略可

段階別評価の最高値。

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

0.0 以上の数値。
評価 - 現在値 省略可

段階別評価の現在の値。

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

0.0 以上の数値。
評価 - 件数 省略可

宿泊施設の評価の件数。

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

文字列
評価 - カウント値 省略可

宿泊施設の評価の件数。

注: 表示の省略ロジックを自分で処理しない場合は、このフィールドを指定します。Count と Count Value の両方が存在する場合、Count がユーザーに表示されます。

Long
価格 - CurrentPrice 条件付きで必須

宿泊施設の現在の価格。

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

自由形式のテキスト
Price - StrikethroughPrice 省略可 宿泊施設の元の価格(UI では取り消し線が引かれます) 自由形式のテキスト
価格のコールアウト 省略可 プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。

自由形式のテキスト

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

StoreEntity

StoreEntity オブジェクトは、レストランや食料品店など、デベロッパー パートナーが公開する個々の店舗を表します。

属性 必須 / 任意 説明 形式
ポスター画像 必須 画像を少なくとも 1 つ指定する必要があります。 詳しくは、画像の仕様をご覧ください。
アクション URI 必須

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

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

URI
タイトル 任意 店舗の名前。

自由形式のテキスト

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

場所 任意 店舗の場所。

自由形式のテキスト

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

コールアウト 任意 店舗のプロモーション、イベント、最新情報を告知するためのコールアウト(該当する場合)。

自由形式のテキスト

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

コールアウトの注意事項 任意 コールアウトに関する注意事項のテキスト。

自由形式のテキスト

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

説明 任意 店舗の説明。

自由形式のテキスト

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

評価 - 最高値 省略可

段階別評価の最高値。

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

0.0 以上の数値。
評価 - 現在値 省略可

段階別評価の現在の値。

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

0.0 以上の数値。
評価 - 件数 省略可

宿泊施設の評価の件数。

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

文字列
評価 - カウント値 省略可

宿泊施設の評価の件数。

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

Long

PointOfInterestEntity

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

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

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

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

文字列

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

ポスター画像 必須

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

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

詳しくは、画像の仕様をご覧ください。
地域 - 国 必須 スポットが発生している国。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 市区町村 必須 スポットがある市区町村。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

位置情報 - 住所を表示 必須 ユーザーに表示されるスポットのアドレス。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 番地 省略可 スポットの番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

地域 - 州 省略可 対象スポットが所在する都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

地域 - 郵便番号 省略可 スポットの郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 近隣 省略可 スポットの周辺地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

AvailabilityTimeWindow - 開始時間 省略可 スポットが営業/利用可能になると予想されるエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
AvailabilityTimeWindow - 終了時刻 省略可 対象ポイントが営業/利用可能であると予想されるエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
バッジ 省略可

各バッジは、フリーテキスト(最大 15 文字)または小さな画像です。

バッジ - テキスト 省略可

バッジのタイトル

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

自由形式のテキスト

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

バッジ - 画像 省略可

小さい画像

特別な UX 処理(画像/動画のサムネイルにバッジをオーバーレイするなど)。

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

詳しくは、画像の仕様をご覧ください。
説明 省略可

エンティティを説明する 1 つの段落。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

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

字幕リスト 省略可

最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

各字幕の推奨テキストサイズは最大 50 文字

評価 - 最高値 省略可

段階別評価の最高値。

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

0.0 以上の数値。
評価 - 現在値 省略可

段階別評価の現在の値。

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

0.0 以上の数値。
評価 - 件数 省略可

スポットの評価の件数。

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

文字列
評価 - カウント値 省略可

スポットの評価の件数。

注: 表示の省略ロジックを自分で処理しない場合は、このフィールドを指定します。Count と Count Value の両方が存在する場合、Count がユーザーに表示されます。

Long
価格 - CurrentPrice 条件付きで必須

スポットのチケット/入場パスの現在の価格。

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

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

自由形式のテキスト

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

コンテンツ カテゴリ 省略可 エンティティ内のコンテンツのカテゴリを記述します。

有効な列挙型のリスト

  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_MOVIES_AND_TV_SHOWS(例: 映画館)
  • TYPE_MEDICAL(例: 病院)
  • TYPE_EDUCATION(例: 学校)
  • TYPE_SPORTS(例: スタジアム)

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

PersonEntity

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

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

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

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

文字列

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

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

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

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

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

自由形式のテキスト

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

プロフィール - その他の画像 省略可 認証済みバッジなどの小さな画像。 詳しくは、画像の仕様をご覧ください。
ヘッダー画像 省略可

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

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

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

フォロワー数または人気度を表します(例:「370 万」)。

注: Count と Count Value の両方が指定されている場合は、Count が使用されます。

文字列

推奨テキストサイズ: 合計数とラベルを合わせて 20 文字以内

人気度 - カウント値 省略可

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

注: さまざまなディスプレイ サイズに合わせて大きな数値を最適化する方法に関するロジックをアプリで処理しない場合は、Count Value を指定します。[Count] と [Count Value] の両方が指定されている場合は、[Count] が使用されます。

Long
人気度 - ラベル 省略可 人気度ラベルの内容を示します(例: 「高評価」)。

文字列

推奨テキストサイズ: 合計数とラベルを合わせて 20 文字以内

人気度 - ビジュアル 省略可

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

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

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

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

段階別評価の最高値。

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

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

段階別評価の現在の値。

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

0.0 以上の数値。
評価 - 件数 省略可

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

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

文字列
評価 - カウント値 省略可

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

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

Long
地域 - 国 省略可 その人物が居住している国、または勤務している国。

自由形式のテキスト

推奨テキストサイズ: 最大 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(例 - 選手)
  • TYPE_DATING

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

RestaurantReservationEntity

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

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

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

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

文字列

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

予約開始時間 必須 予約の開始予定時刻を示すエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
地域 - 国 必須 レストランが所在する国。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 市区町村 必須 レストランがある市区町村。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

位置情報 - 住所を表示 必須 ユーザーに表示されるレストランの住所。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 番地 省略可 レストランの番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

地域 - 州 省略可 レストランが所在する都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

地域 - 郵便番号 省略可 レストランの郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 近隣 省略可 レストランの近隣地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

ポスター画像 省略可 複数の画像が指定されている場合、表示される画像は 1 つのみです。推奨されるアスペクト比は 16:9 です。 詳しくは、画像の仕様をご覧ください。
説明 省略可

エンティティを説明する 1 つの段落。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

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

字幕リスト 省略可

最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

各字幕の推奨テキストサイズは最大 50 文字

テーブルのサイズ 省略可 予約グループの人数 0 より大きい整数

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。 自由形式のテキスト
価格 - CurrentPrice 条件付きで必須

イベントのチケット/パスの現在の価格。

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

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

自由形式のテキスト

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

評価 - 最高値 省略可

段階別評価の最高値。

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

0.0 以上の数値。
評価 - 現在値 省略可

段階別評価の現在の値。

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

0.0 以上の数値。
評価 - 件数 省略可

イベントの評価の件数。

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

文字列
評価 - カウント値 省略可

イベントの評価の件数。

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

Long
コンテンツ カテゴリ 省略可 エンティティ内のコンテンツのカテゴリを記述します。

有効な列挙型のリスト

  • 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(例: meetup)

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

LodgingReservationEntity

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

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

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

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

自由形式のテキスト。例: 「12 月 12 日からのご滞在」

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

チェックイン時刻 必須 予約のチェックイン時間を表すエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
チェックアウト時刻 必須 予約のチェックアウト時間を表すエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
地域 - 国 必須 宿泊施設がある国。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 市区町村 必須 宿泊施設がある市区町村。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

位置情報 - 住所を表示 必須 ユーザーに表示される宿泊施設の住所。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 番地 省略可 宿泊施設の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

地域 - 州 省略可 宿泊施設が所在する都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

地域 - 郵便番号 省略可 宿泊施設の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

場所 - 近隣 省略可 宿泊施設の近隣地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

ポスター画像 省略可

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

注: バッジが提供されている場合は、画像の上下に 24 dp のセーフスペースを確保してください。

詳しくは、画像の仕様をご覧ください。
説明 省略可

エンティティを説明する 1 つの段落。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

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

字幕リスト 省略可

最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

各字幕の推奨テキストサイズは最大 50 文字

予約 ID 省略可 宿泊施設の予約 ID。 自由形式のテキスト
評価 - 最高値 省略可

段階別評価の最高値。

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

0.0 以上の数値。
評価 - 現在値 省略可

段階別評価の現在の値。

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

0.0 以上の数値。
評価 - 件数 省略可

宿泊施設の評価の件数。

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

文字列
評価 - カウント値 省略可

宿泊施設の評価の件数。

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

Long
価格 - CurrentPrice 条件付きで必須

宿泊施設の現在の価格。

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

自由形式のテキスト
Price - StrikethroughPrice 省略可 宿泊施設の元の価格(UI では取り消し線が引かれます) 自由形式のテキスト
価格のコールアウト 省略可 プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。

自由形式のテキスト

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

TransportationReservationEntity

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

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

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

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

自由形式のテキスト。例: 「SFO から SAN」

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

輸送手段のタイプ 必須 予約の交通手段のモード/タイプ。 列挙型: FLIGHT、TRAIN、BUS、FERRY
出発時刻 必須 出発時刻を表すエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
到着時刻 必須 到着時間を表すエポック タイムスタンプ(ミリ秒単位)。 エポック タイムスタンプ(ミリ秒)
出発地 - 国 省略可 出発国。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

出発地 - 都市 省略可 出発地の都市。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

出発地 - 表示住所 省略可 ユーザーに表示される出発地。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

出発地 - 番地 省略可 出発地の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

出発地 - 州 省略可 出発地の都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

出発地 - 郵便番号 省略可 出発地の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

出発地 - 近隣地域 省略可 出発地の近隣地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

到着地 - 国 省略可 到着国。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

到着地 - 市区町村 省略可 到着地の都市。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

到着場所 - 表示住所 省略可 ユーザーに表示される到着場所。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

到着場所 - 番地 省略可 到着場所の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

到着地 - 州 省略可 到着地の都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

到着地 - 郵便番号 省略可 到着地の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

到着場所 - 周辺地域 省略可 到着場所の近隣地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

サービス提供者 - 名前 省略可

サービス提供者の名前。

注: サービス プロバイダには、テキストまたは画像のいずれかが必要です。

自由形式のテキスト。例: 航空会社名
サービス提供者 - 画像 省略可

サービス提供者のロゴ/画像。

注: サービス プロバイダには、テキストまたは画像のいずれかが必要です。

詳しくは、画像の仕様をご覧ください。
ポスター画像 省略可

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

詳しくは、画像の仕様をご覧ください。
説明 省略可

エンティティを説明する 1 つの段落。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

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

字幕リスト 省略可

最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

各字幕の推奨テキストサイズは最大 50 文字

予約 ID 省略可 交通機関の予約の予約 ID。 自由形式のテキスト
価格 - CurrentPrice 条件付きで必須

予約の現在の価格。

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

自由形式のテキスト
Price - StrikethroughPrice 省略可 予約の元の価格(UI では取り消し線が引かれます) 自由形式のテキスト
価格のコールアウト 省略可 プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。

自由形式のテキスト

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

輸送番号 必須 フライト番号、バス番号、列車番号、フェリー/クルーズ番号。 自由形式のテキスト
搭乗時刻 必須 予約の搭乗時間を表すエポック タイムスタンプ(該当する場合) エポック タイムスタンプ(ミリ秒)

VehicleRentalReservationEntity

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

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

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

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

自由形式のテキスト。例: 「Avis Union Square SF」

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

迎車時間 必須 予約の受け取り時間を表すエポック タイムスタンプ。 エポック タイムスタンプ(ミリ秒)
復路便の時間帯 省略可 予約のチェックアウト時間を表すエポック タイムスタンプ。 エポック タイムスタンプ(ミリ秒)
集荷先住所 - 国 省略可 集荷場所の国。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

集荷先住所 - 市区町村 省略可 乗車地の市区町村。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

集荷先住所 - 表示住所 省略可 ユーザーに表示される受け取り場所。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

集荷先住所 - 番地 省略可 受け取り場所の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

集荷先住所 - 都道府県 省略可 受け取り場所の都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

集荷先住所 - 郵便番号 省略可 受け取り場所の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

集荷先住所 - 近隣地域 省略可 受け取り場所の周辺地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

返品先住所 - 国 省略可 返品先住所の国。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

返品先住所 - 市区町村 省略可 返品先住所の市区町村。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

返品先住所 - 表示住所 省略可 ユーザーに表示される返品先住所。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

返品先住所 - 番地 省略可 返品先住所の番地(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

返品先住所 - 都道府県 省略可 返品先住所の都道府県(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

返品先住所 - 郵便番号 省略可 返品先住所の郵便番号(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

返品先住所 - 近隣地域 省略可 返品先住所の近隣地域(該当する場合)。

自由形式のテキスト

推奨テキストサイズ: 最大 20 文字程度

サービス提供者 - 名前 省略可

サービス提供者の名前。

注: サービス プロバイダには、テキストまたは画像のいずれかが必要です。

自由形式のテキスト。例: 「Avis Car Rental」
サービス提供者 - 画像 省略可

サービス提供者のロゴ/画像。

注: サービス プロバイダには、テキストまたは画像のいずれかが必要です。

詳しくは、画像の仕様をご覧ください。
ポスター画像 省略可

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

詳しくは、画像の仕様をご覧ください。
説明 省略可

エンティティを説明する 1 つの段落。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

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

字幕リスト 省略可

最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。

注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。

自由形式のテキスト

各字幕の推奨テキストサイズは最大 50 文字

確認 ID 省略可 車両レンタル予約の確認 ID。 自由形式のテキスト
価格 - CurrentPrice 条件付きで必須

予約の現在の価格。

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

自由形式のテキスト
Price - StrikethroughPrice 省略可 予約の元の価格(UI では取り消し線が引かれます) 自由形式のテキスト
価格のコールアウト 省略可 プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。

自由形式のテキスト

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

画像の仕様

画像アセットの要件となる仕様は次のとおりです。

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

スクエア(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. ArticleEntity や GenericFeaturedEntity などの一部のエンティティは、どのコンテンツ カテゴリでも使用できます。EventEntity、EventReservationEntity、PointOfInterestEntity などの他のエンティティの場合、これらのカテゴリのサブセットのみが対象となります。リストに入力する前に、エンティティ タイプに適したカテゴリのリストを確認してください。
  2. 一部のコンテンツ カテゴリでは、汎用エンティティと ContentCategory の組み合わせではなく、特定のエンティティ タイプを使用します。

    • TYPE_MOVIES_AND_TV_SHOWS - 汎用エンティティを使用する前に、Watch 統合ガイドのエンティティを確認してください。
    • 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 は、サービスを統合に使用できるかどうか、コンテンツをデバイスに表示できるかどうかを確認するために使用されます。

公開するクラスタタイプごとにサービスの提供状況を確認できます。isServiceAvailable API は、サービス可用性を確認する必要があるクラスタタイプを含むリクエスト オブジェクト ServiceAvailabilityRequest を受け入れます。ServiceAvailabilityRequest に必要な ClusterType 列挙値は、次の表で確認できます。

クラスタタイプ クラスタタイプ定数 整数値
不明 TYPE_UNKNOWN 0
おすすめコンテンツ クラスタ TYPE_RECOMMENDATION 1
注目コンテンツ クラスタ TYPE_FEATURED 2
継続クラスタ TYPE_CONTINUATION 3
ショッピング カートクラスタ TYPE_SHOPPING_CART 4
食料品の再注文クラスタ TYPE_FOOD_REORDER 5
食料品のショッピング カートクラスタ TYPE_FOOD_SHOPPING_CART 6
食料品のショッピング リストクラスタ TYPE_FOOD_SHOPPING_LIST 7
ユーザー管理クラスタ TYPE_ENGAGEMENT 8
ショッピング リストクラスタ TYPE_SHOPPING_LIST 9
ショッピング再注文クラスタ TYPE_SHOPPING_REORDER 10
ショッピング注文追跡クラスタ TYPE_SHOPPING_ORDER_TRACKING 11
サブスクリプション クラスタ TYPE_SUBSCRIPTION 12
検索クラスタを続行 TYPE_CONTINUE_SEARCH 13
予約クラスタ TYPE_RESERVATION 14

Kotlin

val request = ServiceAvailabilityRequest.Builder()
    .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
    .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
    .build()

client.isServiceAvailable(request).addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val availabilityMap = task.result
        if (availabilityMap[ClusterType.TYPE_CONTINUATION] == true) {
            // Proceed with publishing continuation content
        }
        if (availabilityMap[ClusterType.TYPE_RECOMMENDATION] == true) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
}

Java

ServiceAvailabilityRequest request =
    new ServiceAvailabilityRequest.Builder()
        .addIntendedClusterType(ClusterType.TYPE_CONTINUATION)
        .addIntendedClusterType(ClusterType.TYPE_RECOMMENDATION)
        .build();

client.isServiceAvailable(request).addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        Map<Integer, Boolean> availabilityMap = task.getResult();
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_CONTINUATION))) {
            // Proceed with publishing continuation content
        }
        if (Boolean.TRUE.equals(availabilityMap.get(ClusterType.TYPE_RECOMMENDATION))) {
            // Proceed with publishing recommendation content
        }
    } else {
        // The IPC call itself fails, proceed with error handling logic here,
        // such as retry.
    }
});
条件付きサービス提供機能

一部の統合アプリでは、配信費用を削減するために、Engage サービスを断続的に有効または無効にする特別な構成がリクエストされます。ただし、この断続的なコンテンツの取り込み戦略は、ユーザー エクスペリエンスに悪影響を及ぼします。古いコンテンツは表示されず、一部のサーフェスは配信されません。

v1.6.0 以降の Engage SDK では、特定のクラスタタイプの可用性を確認できます。アプリで断続的な取り込みを使用している場合:

  • 継続クラスタ(「読書の続き」や「予約」など)は、サポートされているすべてのデバイスでデフォルトで有効のままになります。
  • 他のクラスタタイプ(おすすめなど)は、断続的に有効または無効になります。

このデフォルト構成がニーズに合わない場合は、engage-developers@google.com までお問い合わせください。

v1.6.0 より前の SDK バージョンの場合(非推奨)

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 PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    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

ユーザーがログインしていないためにコンテンツが公開されていない場合、Google は、ログインカードを公開することをおすすめします。なんらかの理由でプロバイダがログインカードを公開できない場合は、ステータス コード 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());

deleteRecommendationsClusters

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

Kotlin

client.deleteRecommendationsClusters()

Java

client.deleteRecommendationsClusters();

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

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 として返され、その原因はエラーコードとして含まれます。

エラーコード エラー名 注
1 SERVICE_NOT_FOUND そのデバイスではこのサービスを利用できません。
2 SERVICE_NOT_AVAILABLE サービスをそのデバイスで利用することはできますが、呼び出し時には利用できません(明示的に無効になっている場合など)。
3 SERVICE_CALL_EXECUTION_FAILURE スレッドに関する問題が発生し、タスクを実行できませんでした。その場合は再試行できます。
4 SERVICE_CALL_PERMISSION_DENIED 呼び出し元がサービスの呼び出しを行うことができません。
5 SERVICE_CALL_INVALID_ARGUMENT リクエストに無効なデータが含まれています(クラスタ数が許容数を超えているなど)。
6 SERVICE_CALL_INTERNAL サービス側でエラーが発生しています。
7 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),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)

// Register Continuation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION),
                           com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                           /*scheduler=*/null)
}

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),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);

// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
                         new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION),
                         com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
                         /*scheduler=*/null);
}
  • AndroidManifest.xml ファイルで <receiver> タグを使用して、実装を静的に宣言します。これにより、アプリが実行されていないときでもブロードキャスト インテントを受信し、コンテンツを公開できるようになります。

<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:permission="com.google.android.engage.REQUEST_ENGAGE_DATA"
      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 が確認したら、おすすめコンテンツ、注目コンテンツ、連続性の各クラスタが公開され、ユーザーに表示されます。