ユーザーが利用している場所にリーチして、アプリのエンゲージメントを高めます。Engage SDK を統合すると、コレクション、エンターテイメント スペース、Google Play ストアなど、複数のオンデバイス サーフェスで、パーソナライズされたおすすめや継続コンテンツをユーザーに直接配信できます。統合により、平均的な APK に追加されるサイズは 50 KB(圧縮後)未満で、ほとんどのアプリで 1 週間程度の開発期間が必要です。詳しくは、ビジネスサイトをご覧ください。
このガイドでは、デベロッパー パートナーが旅行とイベントのコンテンツを Engage コンテンツ サーフェスに配信する手順を説明します。
統合の詳細
用語
この統合には、おすすめコンテンツ、注目コンテンツ、予約、検索の継続の 4 種類のクラスタがあります。
おすすめコンテンツ クラスタには、個々のデベロッパー パートナーが提供する旅行やイベントについて、パーソナライズされたおすすめ情報が表示されます。このおすすめコンテンツは、ユーザーに合わせてパーソナライズすることも、一般的なもの(人気アイテムなど)にすることもできます。これらを使用して、記事、イベント、宿泊施設、観光スポットの候補を表示します。
- おすすめコンテンツ クラスタは、
ArticleEntity
、EventEntity
、LodgingEntity
、PointOfInterestEntity
、またはStoreEntity
のリスティングで構成できますが、異なるタイプのエンティティを組み合わせることはできません。
おすすめコンテンツの構成は次のとおりです。
おすすめコンテンツ クラスタ: 同一のデベロッパー パートナーが提供するおすすめコンテンツのグループが表示される UI ビュー。
エンティティ: クラスタ内の単一のアイテムを表すオブジェクト。この統合では、推奨クラスタを使用して表示されるエンティティがいくつか提供されます。
ArticleEntity: ArticleEntity は、旅行やイベントに関連するテキストベースのコンテンツの推奨事項を表します。記事、ブログ投稿、マーケティング コンテンツ、ニュース スニペットなどに使用できます。
図 1: おすすめコンテンツ クラスタ内の ArticleEntity が 1 つ表示されている UI。 EventEntity: EventEntity は、将来発生するイベントを表します。イベントの開始時間は、ユーザーに伝える必要がある重要な情報です。
図 2: おすすめコンテンツ クラスタ内の単一の EventEntity を示す UI。 LodgingEntity: LodgingEntity は、ホテル、アパート、短期および長期賃貸用の別荘などの宿泊施設を表します。
図 3: おすすめコンテンツ クラスタ内の LodgingEntity が 1 つ表示されている UI。 StoreEntity: StoreEntity は、店舗、レストラン、カフェなどを表します。ユーザーに伝えるべき重要な情報として、食事場所や店舗がコンテンツで強調表示されます。
図 4: おすすめコンテンツ クラスタ内の単一の StoreEntity を示す UI。 PointOfInterestEntity: PointOfInterestEntity は、ガソリン スタンド、イベント会場、テーマパーク、博物館、観光名所、ハイキング コースなどの観光スポットを表します。ユーザーに伝える必要がある重要な情報として位置情報が使われているコンテンツをハイライト表示します。宿泊施設、店舗、飲食店には使用しないでください。
図 5: おすすめコンテンツ クラスタ内の単一の PointOfInterestEntity を示す UI。
- おすすめコンテンツ クラスタは、
予約クラスタでは、複数のデベロッパー パートナーが提供する、ユーザーが最近反応を示したコンテンツが、1 つの UI グループに表示されます。各デベロッパー パートナーは、予約クラスタ内で最大 10 個のエンティティをブロードキャストできます。
予約コンテンツの構造は次のとおりです。
RestaurantReservationEntity: RestaurantReservationEntity は、レストランやカフェの予約を表し、ユーザーが今後のレストラン予約や進行中のレストラン予約を追跡するのに役立ちます。
図 6. 予約クラスタ内の単一の RestaurantReservationEntity を表示する UI。 EventReservationEntity: EventReservationEntity はイベントの予約を表し、ユーザーが今後のイベントや開催中のイベントの予約を追跡するのに役立ちます。イベントには、以下のようなものがあります(これらに限定されません)。
- サッカーの試合の予約などのスポーツ イベント
- e スポーツの予約などのゲーム イベント
- 映画館での映画の予約、コンサート、演劇、サイン会などのエンターテイメント イベント
- ガイドツアー、美術館のチケットなどの旅行や観光スポットの予約
- Social / Seminar / Conferences reservations(ソーシャル / セミナー / 会議の予約)
- 教育 / トレーニング セッションの予約
図 7. 予約クラスタ内の単一の EventReservationEntity を示す UI。 LodgingReservationEntity: LodgingEntityReservation は、旅行の宿泊施設の予約を表し、ユーザーが今後のホテルや民泊の予約を追跡するのに役立ちます。
図 8. 予約クラスタ内の LodgingReservationEntity が 1 つ表示されている UI。 TransportationReservationEntity: TransportationReservationEntity は、あらゆる交通手段の予約を表し、ユーザーが今後のフライト、フェリー、電車、バス、ライドシェア、クルーズの予約を追跡するのに役立ちます。
図 9. 予約クラスタ内の TransportationReservationEntity が 1 つ表示されている UI。 VehicleRentalReservationEntity: VehicleRentalReservationEntity はレンタカーの予約を表し、ユーザーが今後のレンタカーの予約や進行中のレンタカーの予約を追跡するのに役立ちます。
図 10. 予約クラスタ内の VehicleRentalReservationEntity が 1 つ表示されている UI。
注目コンテンツ クラスタでは、複数のデベロッパー パートナーが提供するエンティティのセレクションが 1 つの UI グループに表示されます。1 つの注目クラスタが UI の上部付近に、どのおすすめコンテンツ クラスタよりも優先されて表示されます。各デベロッパー パートナーは、注目コンテンツ クラスタ内で最大 10 個のエンティティをブロードキャストできます。
GenericFeaturedEntity: GenericFeaturedEntity は、デベロッパーのトップ コンテンツを 1 つだけ使用し、ユーザーにとって興味深く関連性の高い最も重要なコンテンツを 1 つだけ表す必要があるという点で、おすすめアイテムとは異なります。
図 11: GenericFeaturedEntity のリストを含む FeaturedCluster を表示する UI
[検索を続行] クラスタは、ユーザーが最近すべての旅行アプリで検索した検索クエリのリストを表示することで、以前の旅行検索を再開できるようにします。クラスタは、予約の後、おすすめクラスタの前に 2 番目の位置に固定されます。各デベロッパー パートナーは、検索を続行クラスタ内で最大 3 個のエンティティをブロードキャストできます。
- PointOfInterestEntity: PointOfInterestEntity は、ガソリン スタンド、イベント会場、テーマパーク、美術館、観光名所、ハイキング コースなどのスポットを表します。ユーザーが以前に検索したコンテンツをハイライト表示します。
事前作業
最小 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.5.2'
}
概要
この設計は、バインドされたサービスの実装に基づいています。
クライアントが公開できるデータには、各種クラスタに関する次の上限が適用されます。
クラスタタイプ | クラスタ数の上限 | クラスタ内のエンティティ数の下限 | クラスタ内のエンティティ数の上限 |
---|---|---|---|
おすすめコンテンツ クラスタ | 最大 7 個 | 少なくとも 1 個 | 最大 50 個(ArticleEntity 、EventEntity 、LodgingEntity 、StoreEntity 、または PointOfInterestEntity ) |
予約クラスタ | 最大 1 個 | 少なくとも 1 個 | 最大 20 個(RestaurantReservationEntity 、EventReservationEntity 、LodgingReservationEntity 、TransportationReservationEntity 、または VehicleRentalReservationEntity ) |
注目コンテンツ クラスタ | 最大 1 個 | 少なくとも 1 個 | 最大 20 個(GenericFeaturedEntity ) |
検索を続けるクラスタ | 最大 1 個 | 少なくとも 1 個 | 最大 3 個(PointOfInterestEntity ) |
ステップ 1: エンティティ データを提供する
この SDK では、各アイテムタイプを表すさまざまなエンティティを定義しています。旅行とイベントのカテゴリでは、次のエンティティがサポートされています。
GenericFeaturedEntity
ArticleEntity
EventEntity
LodgingEntity
StoreEntity
PointOfInterestEntity
RestaurantReservationEntity
EventReservationEntity
LodgingReservationEntity
TransportationReservationEntity
VehicleRentalReservationEntity
下記の表に、各タイプで使用可能な属性と、必須か任意かをまとめています。
GenericFeaturedEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
ポスター画像 | 必須 | 複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨アスペクト比は 16:9 注: バッジが提供される場合は、画像の上部と下部の両方に 24 dp のセーフスペースを確保してください。 |
詳しくは、画像の仕様をご覧ください。 |
タイトル | 任意 | エンティティのタイトル。 | 自由形式のテキスト 推奨テキストサイズ: 50 文字 |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
バッジ | 任意 | 各バッジは自由形式のテキスト(最大 15 文字)または小さな画像です。 画像/動画の上に表示される特別な UX 処理。たとえば、画像の上にバッジが重ねて表示される
|
|
バッジ - テキスト | 任意 | バッジのタイトル 注: バッジにはテキストまたは画像のいずれかが必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 15 文字 |
バッジ - 画像 | 任意 | 小さい画像 特別な UX 処理(画像/動画のサムネイルのバッジ オーバーレイなど)。 注: バッジにはテキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
コンテンツ カテゴリ | 任意 | エンティティ内のコンテンツのカテゴリを説明します。 | 列挙型のリスト ガイダンスについては、コンテンツ カテゴリのセクションをご覧ください。 |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
ArticleEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 自由形式のテキスト 推奨テキストサイズ: 最大 50 文字 |
ポスター画像 | 任意 | 複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨アスペクト比は 16:9 注: 画像を強くおすすめします。バッジが指定されている場合は、画像の上部と下部に 24 dp のセーフスペースを確保します。 |
詳しくは、画像の仕様をご覧ください。 |
ソース - タイトル | 任意 | 作成者、組織、または記者の名前 | 自由形式のテキスト 推奨テキストサイズ: 25 文字未満 |
ソース - 画像 | 任意 | ソースの画像(著者、組織、記者など) | 詳しくは、画像の仕様をご覧ください。 |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
バッジ | 任意 | 各バッジは自由形式のテキスト(最大 15 文字)または小さな画像です。 画像/動画の上に特別な UX 処理(画像の上にバッジを重ねるなど)
|
|
バッジ - テキスト | 任意 | バッジのタイトル 注: バッジにはテキストまたは画像のいずれかが必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 15 文字 |
バッジ - 画像 | 任意 | 小さい画像 特別な UX 処理(画像/動画のサムネイルのバッジ オーバーレイなど)。 注: バッジにはテキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
コンテンツの公開時間 | 任意 | アプリでコンテンツが公開 / 更新されたときのエポック タイムスタンプ(ミリ秒単位)。 | エポック タイムスタンプ(ミリ秒) |
前回のエンゲージメント時間 | 任意 | ユーザーがこのエンティティと最後にやり取りしたときのエポック タイムスタンプ(ミリ秒単位)。 |
エポック タイムスタンプ(ミリ秒) |
進捗率 | 任意 | ユーザーがこれまでに消費したコンテンツの割合。 |
0 ~ 100 の範囲の整数値。 |
コンテンツ カテゴリ | 任意 | エンティティ内のコンテンツのカテゴリを説明します。 | 列挙型のリスト ガイダンスについては、コンテンツ カテゴリのセクションをご覧ください。 |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
EventEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 文字列 推奨テキストサイズ: 最大 50 文字 |
ローカライズされた開始時間 - タイムスタンプ | 必須 |
イベントの開始予定時刻のエポック タイムスタンプ。 |
Joda-Time Instant |
ローカライズされた開始時間 - タイムゾーン | 必須 |
イベントが開始される予定のタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
イベントモード | 必須 | イベントがオンライン、対面、または両方のいずれであるかを示すフィールド。 |
列挙型: VIRTUAL、IN_PERSON、HYBRID |
ポスター画像 | 必須 | 複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨アスペクト比は 16:9 注: 画像を強くおすすめします。バッジが指定されている場合は、画像の上部と下部に 24 dp のセーフスペースを確保します。 |
詳しくは、画像の仕様をご覧ください。 |
Location - Country | 条件付きで必須 | イベントが開催される国。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
住所 - 市区町村 | 条件付きで必須 | イベントが開催される都市。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
位置情報 - 住所を表示 | 条件付きで必須 | イベントが開催される住所または会場名。ユーザーに表示されます。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 番地 | 任意 | イベントが開催される場所の住所(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Location - State | 任意 | イベントが開催される都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
地域 - 郵便番号 | 任意 | イベントが開催される場所の郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 近隣 | 任意 | イベントが開催される大字(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
終了時間 | 任意 |
イベントが終了すると予想されるエポック タイムスタンプ。 注: これはミリ秒単位で表されます。 |
エポック タイムスタンプ(ミリ秒) |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
バッジ | 任意 |
各バッジは自由形式のテキスト(最大 15 文字)または小さな画像です。 |
|
バッジ - テキスト | 任意 | バッジのタイトル 注: バッジにはテキストまたは画像のいずれかが必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 15 文字 |
バッジ - 画像 | 任意 | 小さい画像 特別な UX 処理(画像/動画のサムネイルのバッジ オーバーレイなど)。 注: バッジにはテキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
価格 - CurrentPrice | 条件付きで必須 |
イベントのチケット/パスの現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
価格 - StrikethroughPrice | 任意 | イベントのチケット/パスの元の価格。 | 自由形式のテキスト |
価格のコールアウト | 任意 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
コンテンツ カテゴリ | 任意 | エンティティ内のコンテンツのカテゴリを説明します。 | 対象となる列挙型のリスト
ガイダンスについては、コンテンツ カテゴリのセクションをご覧ください。 |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
LodgingEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 文字列 推奨テキストサイズ: 最大 50 文字 |
ポスター画像 | 必須 |
複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨アスペクト比は 16:9 です。 注: バッジが提供される場合は、画像の上部と下部に 24 dp のセーフスペースを確保します。 |
詳しくは、画像の仕様をご覧ください。 |
Location - Country | 必須 | 宿泊が行われる国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
住所 - 市区町村 | 必須 | 宿泊が行われる市区町村。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
位置情報 - 住所を表示 | 必須 | ユーザーに表示される住所。ほとんどのユースケースでは、都市名と、場合によっては州または国を含めることをおすすめします。ユーザーがその場所の近くにいる場合、ユーザーがその場所をよく知っている場合、または都市がクラスタのタイトルに含まれている場合にのみ、番地または近隣地域を含めます。番地を含める場合は、可能な限り略語(「Street」の場合は「St」、「Avenue」の場合は「Ave」など)を使用して、簡潔な住所を指定します。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 番地 | 任意 | 宿泊施設の番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Location - State | 任意 | 宿泊施設がある都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
地域 - 郵便番号 | 任意 | 宿泊施設の郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 近隣 | 任意 | 宿泊施設の近隣地域(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
バッジ | 任意 |
各バッジは自由形式のテキスト(最大 15 文字)または小さな画像です。 |
|
バッジ - テキスト | 任意 | バッジのタイトル 注: バッジにはテキストまたは画像のいずれかが必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 15 文字 |
バッジ - 画像 | 任意 | 小さい画像 特別な UX 処理(画像/動画のサムネイルのバッジ オーバーレイなど)。 注: バッジにはテキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
AvailabilityTimeWindow - ローカライズされた開始時間 - タイムスタンプ | 任意 | 宿泊施設がオープン/利用可能になる予定のエポック タイムスタンプ。 | Joda-Time Instant |
AvailabilityTimeWindow - ローカライズされた開始時間 - タイムゾーン | 任意 | 宿泊施設が営業していると想定されるタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
AvailabilityTimeWindow - Localized End Time - Timestamp | 任意 | 宿泊施設が営業/利用可能であると予想される期間の終了日時(エポック タイムスタンプ)。 | Joda-Time Instant |
AvailabilityTimeWindow - ローカライズされた終了時間 - タイムゾーン | 任意 | 宿泊施設が営業していると想定されるタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
評価 - 最大値 | 任意 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 現在の値 | 任意 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 件数 | 任意 | 宿泊施設の評価の件数。 注: アプリでユーザーへの表示方法を制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用することを検討してください。そうすることで、表示サイズが小さい場合に切り捨てられるのを防ぐことができます。 |
文字列 |
Rating - Count Value | 任意 | 宿泊施設の評価の件数。 注: 表示の省略形のロジックを自分で処理したくない場合は、このフィールドを指定します。Count と Count Value の両方が存在する場合は、Count を使用してユーザーに表示します。 |
Long |
価格 - CurrentPrice | 条件付きで必須 | 宿泊施設の現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
価格 - StrikethroughPrice | 任意 | 宿泊施設の元の価格(UI では取り消し線が引かれます) | 自由形式のテキスト |
価格のコールアウト | 任意 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
StoreEntity
StoreEntity
オブジェクトは、デベロッパー パートナーが公開する個々の店舗(旅行体験に関連する人気の飲食店など)を表します。
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
ポスター画像 | 必須 | 画像を少なくとも 1 つ指定する必要があります。 | 詳しくは、画像の仕様をご覧ください。 |
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 任意 | 店舗の名前。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
場所 | 任意 | 店舗の場所。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
コールアウト | 任意 | 店舗のプロモーション、イベント、最新情報を告知するためのコールアウト(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(テキストが長すぎると省略記号が表示されます) |
コールアウトの注意事項 | 任意 | コールアウトに関する注意事項のテキスト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
説明 | 任意 | 店舗の説明。 | 自由形式のテキスト 推奨テキストサイズは 90 文字未満(長すぎるテキストは省略記号が表示されます) |
カテゴリ | 任意 | 店舗のカテゴリ。飲食店の場合、料理の種類(「フレンチ」、「ニューアメリカン」、「ラーメン」、「高級料理」など)を指定できます。 |
自由形式のテキスト 推奨テキストサイズは 45 文字未満(テキストが長すぎると省略記号が表示されます) |
評価 - 最大値 | 任意 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 現在の値 | 任意 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 件数 | 任意 | 宿泊施設の評価の件数。 注: アプリでユーザーへの表示方法を制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用することを検討してください。そうすることで、表示サイズが小さい場合に切り捨てられるのを防ぐことができます。 |
文字列 |
Rating - Count Value | 任意 | 宿泊施設の評価の件数。 注: 表示の省略形のロジックを自分で処理したくない場合は、このフィールドを指定します。Count と Count Value の両方が存在する場合は、Count を使用してユーザーに表示します。 |
Long |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
PointOfInterestEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 文字列 推奨テキストサイズ: 最大 50 文字 |
ポスター画像 | 条件付きで必須 |
複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨アスペクト比は 16:9 注: エンティティがおすすめコンテンツ クラスタの一部である場合は、画像が必要です。バッジが指定されている場合は、画像の上部と下部の両方に 24 dp のセーフスペースを確保します |
詳しくは、画像の仕様をご覧ください。 |
前回のエンゲージメント時間 | 条件付きで必須 |
ユーザーがこのエンティティを最後に操作したときのエポック タイムスタンプ。 注: エンティティが検索継続クラスタの一部である場合、このフィールドは必須です。 |
Joda-Time Instant |
Location - Country | 条件付きで必須 |
注目すべき出来事が起こっている国。 注: エンティティが推奨事項クラスタの一部である場合、このフィールドは必須です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
住所 - 市区町村 | 条件付きで必須 |
スポットがある市区町村。 注: エンティティが推奨事項クラスタの一部である場合、このフィールドは必須です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
位置情報 - 住所を表示 | 条件付きで必須 |
ユーザーに表示される住所。可能な場合は略語を使用して、簡潔な住所を指定します(たとえば、「Street」は「St」、「Avenue」は「Ave」)。この文字列は、ユーザーのデバイスと設定に応じて切り捨てられることがあります。明確に識別できるように、都市名を含めます。 注: エンティティが推奨事項クラスタの一部である場合、このフィールドは必須です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 35 文字程度 |
場所 - 番地 | 任意 | スポットの番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Location - State | 任意 | スポットがある都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
地域 - 郵便番号 | 任意 | スポットの郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 近隣 | 任意 | スポットの周辺地域(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
AvailabilityTimeWindow - ローカライズされた開始時間 - タイムスタンプ | 任意 | スポットがオープン/利用可能になる予定の Unix エポック タイムスタンプ。 | Joda-Time Instant |
AvailabilityTimeWindow - ローカライズされた開始時間 - タイムゾーン | 任意 | スポットが営業していると想定されるタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
AvailabilityTimeWindow - Localized End Time - Timestamp | 任意 | スポットがオープンまたは利用可能であると予想される期間の終了日時を示すエポック タイムスタンプ。 | Joda-Time Instant |
AvailabilityTimeWindow - ローカライズされた終了時間 - タイムゾーン | 任意 | スポットが営業していると想定されるタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
バッジ | 任意 |
各バッジは自由形式のテキスト(最大 15 文字)または小さな画像です。 |
|
バッジ - テキスト | 任意 | バッジのタイトル 注: バッジにはテキストまたは画像のいずれかが必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 15 文字 |
バッジ - 画像 | 任意 | 小さい画像 特別な UX 処理(画像/動画のサムネイルのバッジ オーバーレイなど)。 注: バッジにはテキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
評価 - 最大値 | 任意 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 現在の値 | 任意 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 件数 | 任意 | スポットの評価の件数。 注: アプリでユーザーへの表示方法を制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用することを検討してください。そうすることで、表示サイズが小さい場合に切り捨てられるのを防ぐことができます。 |
文字列 |
Rating - Count Value | 任意 | スポットの評価の件数。 注: 表示の省略形のロジックを自分で処理したくない場合は、このフィールドを指定します。Count と Count Value の両方が存在する場合は、Count を使用してユーザーに表示します。 |
Long |
価格 - CurrentPrice | 条件付きで必須 |
スポットのチケット/入場パスの現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
価格 - StrikethroughPrice | 任意 | スポットのチケット/入場パスの元の価格。 | 自由形式のテキスト |
価格のコールアウト | 任意 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 |
自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
コンテンツ カテゴリ | 任意 | エンティティ内のコンテンツのカテゴリを説明します。 | 対象となる列挙型のリスト
ガイダンスについては、コンテンツ カテゴリのセクションをご覧ください。 |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
RestaurantReservationEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 文字列 推奨テキストサイズ: 最大 50 文字 |
ローカライズされた予約開始時間 - タイムスタンプ | 必須 | 予約の開始予定時刻のエポック タイムスタンプ。 | Joda-Time Instant |
ローカライズされた予約開始時間 - タイムゾーン | 必須 | 予約の開始が予定されているタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
Location - Country | 必須 | レストランがある国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
住所 - 市区町村 | 必須 | レストランがある市区町村。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
位置情報 - 住所を表示 | 必須 | ユーザーに表示されるプレストランの住所。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 番地 | 任意 | レストランの番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Location - State | 任意 | レストランがある都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
地域 - 郵便番号 | 任意 | レストランの郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 近隣 | 任意 | レストランの近隣地域(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
ポスター画像 | 任意 | 複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨されるアスペクト比は 16:9 です | 詳しくは、画像の仕様をご覧ください。 |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
テーブルのサイズ | 任意 | 予約グループの人数 | 0 より大きい整数 |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
EventReservationEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 文字列 推奨テキストサイズ: 最大 50 文字 |
ローカライズされた開始時間 - タイムスタンプ | 必須 |
イベントの開始予定時刻のエポック タイムスタンプ。 |
Joda-Time Instant |
ローカライズされた開始時間 - タイムゾーン | 必須 |
イベントが開始される予定のタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
イベントモード | 必須 | イベントがオンライン、対面、または両方のいずれであるかを示すフィールド。 |
列挙型: VIRTUAL、IN_PERSON、HYBRID |
Location - Country | 条件付きで必須 | イベントが開催される国。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
住所 - 市区町村 | 条件付きで必須 | イベントが開催される都市。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
位置情報 - 住所を表示 | 条件付きで必須 | イベントが開催される住所または会場名。ユーザーに表示されます。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 番地 | 任意 | イベントが開催される場所の住所(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Location - State | 任意 | イベントが開催される都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
地域 - 郵便番号 | 任意 | イベントが開催される場所の郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 近隣 | 任意 | イベントが開催される大字(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
ポスター画像 | 任意 | 複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨アスペクト比は 16:9 注: 画像を強くおすすめします。バッジが指定されている場合は、画像の上部と下部に 24 dp のセーフスペースを確保します。 |
詳しくは、画像の仕様をご覧ください。 |
ローカライズされた終了時間 - タイムスタンプ | 任意 |
イベントが終了すると予想されるエポック タイムスタンプ。 |
Joda-Time Instant |
ローカライズされた終了時間 - タイムゾーン | 任意 |
イベントの終了が予定されているタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
サービス プロバイダ - 名前 | 任意 |
サービス プロバイダの名前。 注: サービス プロバイダにはテキストまたは画像のいずれかが必要です。 |
自由形式のテキスト。(イベント主催者/ツアーの名前など) |
サービス プロバイダ - 画像 | 任意 |
サービス プロバイダのロゴ/画像。 注: サービス プロバイダにはテキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
バッジ | 任意 |
各バッジは自由形式のテキスト(最大 15 文字)または小さな画像です。 |
|
バッジ - テキスト | 任意 | バッジのタイトル 注: バッジにはテキストまたは画像のいずれかが必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 15 文字 |
バッジ - 画像 | 任意 | 小さい画像 特別な UX 処理(画像/動画のサムネイルのバッジ オーバーレイなど)。 注: バッジにはテキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
予約 ID | 任意 | イベント予約の予約 ID。 | 自由形式のテキスト |
価格 - CurrentPrice | 条件付きで必須 |
イベントのチケット/パスの現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
価格 - StrikethroughPrice | 任意 | イベントのチケット/パスの元の価格。 | 自由形式のテキスト |
価格のコールアウト | 任意 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
評価 - 最大値 | 任意 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 現在の値 | 任意 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 件数 | 任意 | イベントの評価の件数。 注: アプリでユーザーへの表示方法を制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用することを検討してください。そうすることで、表示サイズが小さい場合に切り捨てられるのを防ぐことができます。 |
文字列 |
Rating - Count Value | 任意 | イベントの評価の件数。 注: 表示の省略形のロジックを自分で処理したくない場合は、このフィールドを指定します。Count と Count Value の両方が存在する場合は、Count を使用してユーザーに表示します。 |
Long |
コンテンツ カテゴリ | 任意 | エンティティ内のコンテンツのカテゴリを説明します。 | 対象となる列挙型のリスト
ガイダンスについては、コンテンツ カテゴリのセクションをご覧ください。 |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
LodgingReservationEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 自由形式のテキスト。例: 「12 月 12 日からのご宿泊」 推奨テキストサイズ: 最大 50 文字 |
ローカライズされたチェックイン時間 - タイムスタンプ | 必須 | 予約のチェックイン時間を表すエポック タイムスタンプ。 | Joda-Time Instant |
ローカライズされたチェックイン時間 - タイムゾーン | 必須 | 予約のチェックイン時間が存在するタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
ローカライズされたチェックアウト時刻 - タイムスタンプ | 必須 | 予約のチェックアウト時刻を表すエポック タイムスタンプ。 | Joda-Time Instant |
ローカライズされたチェックアウト時刻 - タイムゾーン | 必須 | 予約のチェックアウト時間が存在するタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
Location - Country | 必須 | 宿泊施設がある国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
住所 - 市区町村 | 必須 | 宿泊施設がある市区町村。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
位置情報 - 住所を表示 | 必須 | ユーザーに表示される住所。可能な場合は略語を使用して、簡潔な住所を指定します(たとえば、「Street」は「St」、「Avenue」は「Ave」)。この文字列は、ユーザーのデバイスと設定に応じて切り捨てられることがあります。都市名を記載して、明確に識別できるようにします。 | 自由形式のテキスト 推奨テキストサイズ: 最大 35 文字程度 |
場所 - 番地 | 任意 | 宿泊施設の番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Location - State | 任意 | 宿泊施設がある都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
地域 - 郵便番号 | 任意 | 宿泊施設の郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
場所 - 近隣 | 任意 | 宿泊施設の近隣地域(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
ポスター画像 | 任意 |
複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨アスペクト比は 16:9 です。 注: バッジが提供される場合は、画像の上部と下部の両方に 24 dps のセーフスペースを確保します。 |
詳しくは、画像の仕様をご覧ください。 |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
予約 ID | 任意 | 宿泊予約の予約 ID。 | 自由形式のテキスト |
評価 - 最大値 | 任意 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 現在の値 | 任意 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
評価 - 件数 | 任意 | 宿泊施設の評価の件数。 注: アプリでユーザーへの表示方法を制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用することを検討してください。そうすることで、表示サイズが小さい場合に切り捨てられるのを防ぐことができます。 |
文字列 |
Rating - Count Value | 任意 | 宿泊施設の評価の件数。 注: 表示の省略形のロジックを自分で処理したくない場合は、このフィールドを指定します。Count と Count Value の両方が存在する場合は、Count を使用してユーザーに表示します。 |
Long |
価格 - CurrentPrice | 条件付きで必須 | 宿泊施設の現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
価格 - StrikethroughPrice | 任意 | 宿泊施設の元の価格(UI では取り消し線が引かれます) | 自由形式のテキスト |
価格のコールアウト | 任意 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
TransportationReservationEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 自由形式のテキスト。例: 「SFO to SAN」 推奨テキストサイズ: 最大 50 文字 |
交通手段の種類 | 必須 | 予約の交通手段/タイプ。 | 列挙型: FLIGHT、TRAIN、BUS、FERRY |
ローカライズされた出発時刻 - タイムスタンプ | 必須 | 出発時刻を表すエポック タイムスタンプ。 | Joda-Time Instant |
出発時刻(現地時間) - タイムゾーン | 必須 | 出発時刻のタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
ローカライズされた到着時刻 - タイムスタンプ | 必須 | 到着時刻を表すエポック タイムスタンプ。 | Joda-Time Instant |
到着時刻(現地時間) - タイムゾーン | 必須 | 到着時刻のタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
輸送番号 | 必須 | フライト番号、バス番号、列車番号、フェリー/クルーズ番号。 | 自由形式のテキスト |
搭乗時刻(現地時間) - タイムスタンプ | 必須 | 予約の搭乗時刻を表すエポック タイムスタンプ(該当する場合) | Joda-Time Instant |
搭乗時刻(現地時間) - タイムゾーン | 必須 | 予約の搭乗時間のタイムゾーン(該当する場合) |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
出発地 - 国 | 任意 | 出発国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 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 | 条件付きで必須 | 予約の現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
価格 - StrikethroughPrice | 任意 | 予約の元の価格(UI では取り消し線が引かれます) | 自由形式のテキスト |
価格のコールアウト | 任意 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
VehicleRentalReservationEntity
属性 | 必須 / 任意 | 説明 | 形式 |
---|---|---|---|
アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
タイトル | 必須 | エンティティのタイトル。 | 自由形式のテキスト。例: 「Avis Union Square SF」 推奨テキストサイズ: 最大 50 文字 |
ローカライズされた受け取り時間 - タイムスタンプ | 必須 | 予約の受け取り時間を表すエポック タイムスタンプ。 | Joda-Time Instant |
Localized Pickup Time - Timezone(ローカライズされた受け取り時間 - タイムゾーン) | 必須 | 予約の受け取り時間のタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
ローカライズされた帰宅時間 - タイムスタンプ | 任意 | 予約のチェックアウト時刻を表すエポック タイムスタンプ。 | Joda-Time Instant |
ローカライズされた帰着時刻 - タイムゾーン | 任意 | 予約のチェックアウト時間のタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
Pickup Address - Country(受け取り場所の住所 - 国) | 任意 | 受け取り場所の国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
受け取り場所の住所 - 市区町村 | 任意 | 受け取り場所の市区町村。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Pickup Address - Display Address(受け取り場所 - 表示住所) | 任意 | ユーザーに表示される受け取り場所。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
受け取り場所の住所 - 番地 | 任意 | 受け取り場所の番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
受け取り場所の住所 - 都道府県 | 任意 | 受け取り場所の都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
受け取り場所の住所 - 郵便番号 | 任意 | 受け取り場所の郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Pickup Address - Neighborhood(受け取り場所 - 近隣地域) | 任意 | 受け取り場所の近隣地域(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Return Address - Country(返品先住所 - 国) | 任意 | 返品先の国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Return Address - City(返品先住所 - 市区町村) | 任意 | 返品配送先の市区町村。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Return Address - Display Address(差出人住所 - 表示住所) | 任意 | ユーザーに表示される返品先。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Return Address - Street Address(返品先住所 - 番地) | 任意 | 返品先の住所(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
返品先住所 - 都道府県 | 任意 | 返品先の都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
差出人住所 - 郵便番号 | 任意 | 返品先の郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
Return Address - Neighborhood(返品先住所 - 近隣地域) | 任意 | 返品場所の近隣地域(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
サービス プロバイダ - 名前 | 任意 |
サービス プロバイダの名前。 注: サービス プロバイダにはテキストまたは画像のいずれかが必要です。 |
自由形式のテキスト。(例: 「Avis Car Rental」) |
サービス プロバイダ - 画像 | 任意 |
サービス プロバイダのロゴ/画像。 注: サービス プロバイダにはテキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
ポスター画像 | 任意 |
複数の画像が指定されている場合、画像は 1 つしか表示されません。推奨アスペクト比は 16:9 です。 |
詳しくは、画像の仕様をご覧ください。 |
説明 | 任意 | エンティティを説明する 1 つの段落のテキスト。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
サブタイトルのリスト | 任意 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: 説明と字幕リストの両方がユーザーに表示されるわけではありません。どちらか一方のみが表示されます。 |
自由形式のテキスト 各サブタイトルの推奨テキストサイズ: 最大 50 文字 |
確認 ID | 任意 | レンタカー予約の確認 ID。 | 自由形式のテキスト |
価格 - CurrentPrice | 条件付きで必須 | 予約の現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
価格 - StrikethroughPrice | 任意 | 予約の元の価格(UI では取り消し線が引かれます) | 自由形式のテキスト |
価格のコールアウト | 任意 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
終了タイムスタンプ | 任意 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
画像の仕様
画像アセットの要件となる仕様は次のとおりです。
アスペクト比 | 最小ピクセル数 | 推奨ピクセル数 |
---|---|---|
スクエア(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% の範囲内に配置してください。
- 透明な背景を使用して、ダークモードとライトモードの設定で画像が適切に表示されるようにします。
タイムゾーンの仕様
オフセット(「-07:00」など)よりも ID(「America/Los_Angeles」など)を優先します。
使用例: DateTimeZone.forID("America/Los_Angeles")
コンテンツ カテゴリ
コンテンツ カテゴリを使用すると、アプリは複数のカテゴリに属するコンテンツを公開できます。これにより、コンテンツが次の事前定義されたカテゴリにマッピングされます。
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 でホストする必要があります。
コンテンツ カテゴリを使用するためのガイドライン
- ArticleEntity や GenericFeaturedEntity などの一部のエンティティは、コンテンツ カテゴリのいずれかを使用できます。EventEntity、EventReservationEntity、PointOfInterestEntity などの他のエンティティでは、これらのカテゴリのサブセットのみが対象となります。リストを入力する前に、エンティティ タイプに該当するカテゴリのリストを確認します。
一部のコンテンツ カテゴリでは、汎用エンティティと ContentCategory の組み合わせではなく、特定のエンティティ タイプを使用します。
- TYPE_MOVIES_AND_TV_SHOWS - 汎用エンティティを使用する前に、視聴統合ガイドでエンティティを確認してください。
- TYPE_BOOKS - 汎用エンティティを使用する前に、EbookEntity を確認してください。
- TYPE_AUDIOBOOKS - 汎用エンティティを使用する前に、AudiobookEntity を確認してください。
- TYPE_SHOPPING - 汎用エンティティを使用する前に ShoppingEntity を確認します。
- TYPE_FOOD_AND_DRINK - 汎用エンティティを使用する前に、食品統合ガイドのエンティティを確認してください。
ContentCategory フィールドは省略可能です。コンテンツが前述のカテゴリのいずれにも属していない場合は、空白のままにします。
複数のコンテンツ カテゴリを指定する場合は、コンテンツとの関連性の高い順に指定します。最も関連性の高いコンテンツ カテゴリをリストの先頭に配置します。
ステップ 2: クラスタデータを提供する
WorkManager などを使用して、コンテンツ公開ジョブをバックグラウンドで実行し、定期的に、またはイベントごとに(ユーザーがアプリを開いたときや、カートに商品を追加したときなど)スケジュールを設定することをおすすめします。
AppEngageTravelClient
はクラスタの公開を行います。
クライアントでクラスタを公開するには、次の API があります。
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishReservationCluster
publishContinueSearchCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteReservationCluster
deleteContinueSearchCluster
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
データが削除されます。 - リクエストのデータが解析されて、更新された注目コンテンツ クラスタに保存されます。
エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
publishReservationCluster
この API は、ReservationCluster
オブジェクトを公開するために使用されます。
Kotlin
client.publishReservationCluster(
PublishReservationClusterRequest.Builder()
.setReservationCluster(
ReservationCluster.Builder()
.addLodgingReservationEntity(lodgingReservationEntity)
.addVehicleRentalReservationEntity(vehicleRentalReservationEntity)
.addTransportationReservationEntity(transportationReservationEntity)
.addEventReservationEntity(eventReservationEntity)
.addRestaurantReservationEntity(restaurantReservationEntity)
.build())
.build())
Java
client.publishReservationCluster(
new PublishReservationClusterRequest.Builder()
.setReservationCluster(
new ReservationCluster.Builder()
.addLodgingReservationEntity(lodgingReservationEntity)
.addVehicleRentalReservationEntity(vehicleRentalReservationEntity)
.addTransportationReservationEntity(transportationReservationEntity)
.addEventReservationEntity(eventReservationEntity)
.addRestaurantReservationEntity(restaurantReservationEntity)
.build())
.build());
サービスがリクエストを受信すると、1 つのトランザクション内で次のアクションが行われます。
- デベロッパー パートナーが提供した既存の
ReservationCluster
データが削除されます。 - リクエストのデータが解析されて、更新された予約クラスタに保存されます。
エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
publishContinueSearchCluster
この API は、ContinueSearchCluster
オブジェクトのリストを公開するために使用されます。
Kotlin
client.publishContinueSearchCluster(
PublishContinueSearchClusterRequest.Builder()
.setContinueSearchCluster(
ContinueSearchCluster.Builder()
.addPointOfInterestEntity(entity1)
.addPointOfInterestEntity(entity2)
.build())
.build())
Java
client.publishContinueSearchCluster(
new PublishContinueSearchClusterRequest.Builder()
.setContinueSearchCluster(
new ContinueSearchCluster.Builder()
.addPointOfInterestEntity(entity1)
.addPointOfInterestEntity(entity2)
.build())
.build());
サービスがリクエストを受信すると、1 つのトランザクション内で次のアクションが行われます。
- デベロッパー パートナーが提供した既存の
ContinueSearchCluster
データが削除されます。 - リクエストのデータが解析されて、更新された検索継続クラスタに保存されます。
エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
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());
deleteRecommendationClusters
この API は、おすすめコンテンツ クラスタのコンテンツを削除するために使用されます。
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
サービスがリクエストを受信すると、おすすめコンテンツ クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
deleteFeaturedCluster
この API は、注目コンテンツ クラスタのコンテンツを削除するために使用されます。
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
サービスがリクエストを受信すると、注目コンテンツ クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
deleteReservationCluster
この API は、予約クラスタのコンテンツを削除するために使用されます。
Kotlin
client.deleteReservationCluster()
Java
client.deleteReservationCluster();
サービスがリクエストを受信すると、予約クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
deleteUserManagementCluster
この API は、ユーザー アカウント管理クラスタのコンテンツを削除するために使用されます。
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
サービスがリクエストを受信すると、ユーザー アカウント管理クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
deleteContinueSearchCluster
この API は、検索継続クラスタのコンテンツを削除するために使用されます。
Kotlin
client.deleteContinueSearchCluster()
Java
client.deleteContinueSearchCluster();
サービスがリクエストを受信すると、検索継続クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
deleteClusters
この API は、特定のクラスタタイプのコンテンツを削除するために使用されます。
Kotlin
client.deleteClusters(
DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_RESERVATION)
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
.addClusterType(ClusterType.TYPE_CONTINUE_SEARCH)
.build())
Java
client.deleteClusters(
new DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_RESERVATION)
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
.addClusterType(ClusterType.TYPE_CONTINUE_SEARCH)
.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 continue search cluster publish when PUBLISH_CONTINUE_SEARCH
// broadcast is received
// Trigger reservation cluster publish when PUBLISH_RESERVATION broadcast is
// received
}
fun registerBroadcastReceivers(context: Context){
var context = context
context = context.applicationContext
// Register Recommendation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
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(AppEngageBroadcastReceiver(),
IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Continue Search Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null)
// Register Reservation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION),
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 continue search cluster publish when PUBLISH_CONTINUE_SEARCH
// broadcast is received
// Trigger reservation cluster publish when PUBLISH_RESERVATION 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 Continue Search Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_CONTINUE_SEARCH),
com.google.android.engage.service.BroadcastReceiverPermissions.BROADCAST_REQUEST_DATA_PUBLISH_PERMISSION,
/*scheduler=*/null);
// Register Reservation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.travel.service.Intents.ACTION_PUBLISH_RESERVATION),
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.travel.PUBLISH_CONTINUE_SEARCH" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.travel.PUBLISH_RESERVATION" />
</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.travel.PUBLISH_CONTINUE_SEARCH
このインテントを受信したときに、publishContinueSearchCluster
の呼び出しを開始することをおすすめします。com.google.android.engage.action.travel.PUBLISH_RESERVATION
このインテントを受信したときに、publishReservationCluster
の呼び出しを開始することをおすすめします。
統合ワークフロー
統合完了後に検証を行う手順のガイドについては、デベロッパー向けの Engage 統合ワークフローをご覧ください。
よくある質問
よくある質問については、Engage SDK に関するよくある質問をご覧ください。
お問い合わせ
統合プロセスについてご不明な点がありましたら、engage-developers@google.com までお問い合わせください。
次のステップ
この統合が完了した後のステップは次のとおりです。
- Google によるテストの準備が整った統合済みの APK を添付して、engage-developers@google.com にメールを送信します。
- Google 内部で検証と審査を行い、想定どおりに統合が機能するかどうかを確認します。変更が必要な場合は、Google から必要な詳細事項をご連絡します。
- テストが完了し、変更の必要もない場合は、更新された統合済みの APK を Google Play ストアに公開できるようになったことを Google からお知らせします。
- 更新された APK が Google Play ストアに公開されていることを Google が確認したら、おすすめコンテンツ、注目コンテンツ、予約、検索の継続の各クラスタが公開され、ユーザーに表示されます。