ユーザーがどこにいてもリーチして、アプリ エンゲージメントを向上させましょう。Engage SDK を統合すると、コレクション、エンターテイメント スペース、Google Play ストアなど、複数のオンデバイス サーフェスで、パーソナライズされたおすすめ表示やコンテンツの続きをユーザーの手元へ直接届けることができます。統合により、平均的な APK に追加されるサイズは 50 KB(圧縮)未満であり、ほとんどのアプリで開発者の作業時間は 1 週間程度です。詳しくは、ビジネスサイトをご覧ください。
このガイドでは、デベロッパー パートナーが旅行やイベントのコンテンツを Engage コンテンツ サーフェスに配信する手順について説明します。
カテゴリのサポートと掲載先
Engage SDK サーフェスの利用資格は、アプリのコンテンツ カテゴリに基づきます。次の表を使用して、特定のサーフェスの利用資格を確認してください。
| ステータス | コンテンツ カテゴリまたはユースケース | サポートされているサーフェス |
|---|---|---|
|
サポート対象 (すべてのサーフェスで利用可能) |
|
|
| サポート対象外 |
|
Android のスキル
GitHub で表示Engage SDK を統合する
android skills add engage-sdk-integration統合の詳細
このセクションでは、旅行とイベントのコンテンツを Engage SDK と統合するために必要な手順、データモデル、用語について詳しく説明します。
用語
この統合には、おすすめコンテンツ、注目コンテンツ、予約、検索を続行のクラスタタイプがあります。
おすすめコンテンツ クラスタには、特定のデベロッパー パートナーが提供するパーソナライズされたおすすめの旅行やイベントの情報が表示されます。このおすすめコンテンツは、ユーザーに合わせてパーソナライズすることも、一般的なもの(人気アイテムなど)にすることもできます。これらを使用して、記事、イベント、宿泊施設、おすすめの観光スポットを特集します。
- おすすめコンテンツ クラスタは、
ArticleEntity、EventEntity、LodgingEntity、PointOfInterestEntity、またはStoreEntityのリスティングで構成できますが、異なるタイプのエンティティを組み合わせることはできません。
おすすめコンテンツの構成は次のとおりです。
おすすめコンテンツ クラスタ: 同一のデベロッパー パートナーが提供するおすすめコンテンツのグループが表示される UI ビュー。
エンティティ: クラスタ内の単一のアイテムを表すオブジェクト。この統合により、おすすめコンテンツ クラスタを使用して表示されるエンティティがいくつか提供されます。
ArticleEntity: ArticleEntity は、旅行やイベントに関連するテキストベースのコンテンツのレコメンデーションを表します。記事、ブログ投稿、マーケティング コンテンツ、ニュース スニペットなどに使用できます。
図 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。
- おすすめコンテンツ クラスタは、
予約クラスタでは、複数のデベロッパー パートナーが提供する、ユーザーが最近反応を示したコンテンツが、1 つの UI グループに表示されます。各デベロッパー パートナーは、予約クラスタ内で最大 10 個のエンティティをブロードキャストできます。
予約コンテンツの構成は次のとおりです。
RestaurantReservationEntity: RestaurantReservationEntity は、レストランやカフェの予約を表し、ユーザーが今後のレストラン予約や進行中のレストラン予約を追跡できるようにします。
図 6. 予約クラスタ内の単一の RestaurantReservationEntity を表示する UI。 EventReservationEntity: EventReservationEntity は、イベントの予約を表し、ユーザーが今後のイベント予約や進行中のイベント予約を追跡するのに役立ちます。イベントには、次のようなものがあります(ただし、これらに限定されません)。
- サッカーの試合の予約などのスポーツ イベント
- e スポーツの予約などのゲームイベント
- 映画館での映画の予約、コンサート、劇場、サイン会などのエンターテイメント イベント
- ガイドツアー、美術館のチケットなどの旅行や観光スポットの予約
- ソーシャル / セミナー / 会議の予約
- 教育 / トレーニング セッションの予約
図 7. 予約クラスタ内の単一の EventReservationEntity を表示する UI。 LodgingReservationEntity: LodgingEntityReservation は、旅行宿泊施設の予約を表し、ユーザーが今後のホテルや民泊の予約、または進行中のホテルや民泊の予約を追跡するのに役立ちます。
図 8. 予約クラスタ内の単一の LodgingReservationEntity を表示する UI。 TransportationReservationEntity: TransportationReservationEntity は、あらゆる手段による交通機関の予約を表し、ユーザーが今後のフライト、フェリー、電車、バス、配車サービス、クルーズの予約を追跡できるようにします。
図 9. 予約クラスタ内の単一の TransportationReservationEntity を表示する UI。 VehicleRentalReservationEntity: VehicleRentalReservationEntity は、レンタカーの予約を表し、ユーザーが今後のレンタカー予約や進行中のレンタカー予約を追跡できるようにします。
図 10. 予約クラスタ内の単一の VehicleRentalReservationEntity を表示する UI。
注目コンテンツ クラスタでは、複数のデベロッパー パートナーが提供するエンティティのセレクションが 1 つの UI グループに表示されます。1 つの注目クラスタが UI の上部付近に、どのおすすめコンテンツ クラスタよりも優先されて表示されます。各デベロッパー パートナーは、注目コンテンツ クラスタ内で最大 10 個のエンティティをブロードキャストできます。
GenericFeaturedEntity: GenericFeaturedEntity は、デベロッパーが提供する単一のトップ コンテンツに使用され、ユーザーにとって興味深く関連性の高い、最も重要な単一のコンテンツを表す必要があるという点で、レコメンデーション アイテムとは異なります。
図 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.6.0'
}
概要
この設計は、バインドされたサービスの実装に基づいています。
クライアントが公開できるデータには、各種クラスタに関する次の上限が適用されます。
| クラスタタイプ | クラスタ数の上限 | クラスタ内のエンティティ数の下限 | クラスタ内のエンティティ数の上限 |
|---|---|---|---|
| おすすめコンテンツ クラスタ | 最大 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 では、各アイテムタイプを表すさまざまなエンティティを定義しています。旅行とイベントのカテゴリでは、次のエンティティがサポートされています。
GenericFeaturedEntityArticleEntityEventEntityLodgingEntityStoreEntityPointOfInterestEntityRestaurantReservationEntityEventReservationEntityLodgingReservationEntityTransportationReservationEntityVehicleRentalReservationEntity
下記の表に、各タイプで使用可能な属性と、必須か任意かをまとめています。
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 のセーフスペースを確保します。 |
詳しくは、画像の仕様をご覧ください。 |
| 地域 - 国 | 条件付きで必須 | イベントが開催される国。 注: これは、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 文字未満(長すぎるテキストは省略記号が表示されます) |
| コンテンツ カテゴリ | 省略可 | エンティティ内のコンテンツのカテゴリを記述します。 | 有効な列挙型のリスト
詳しくは、コンテンツ カテゴリのセクションをご覧ください。 |
| DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
| 開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
| 終了タイムスタンプ | 省略可 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
LodgingEntity
| 属性 | 必須 / 任意 | 説明 | 形式 |
|---|---|---|---|
| アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
| タイトル | 必須 | エンティティのタイトル。 | 文字列 推奨テキストサイズ: 最大 50 文字 |
| ポスター画像 | 必須 |
複数の画像が指定されている場合、表示される画像は 1 つのみです。推奨されるアスペクト比は 16:9 です。 注: バッジが提供されている場合は、画像の上下に 24 dp のセーフスペースを確保してください。 |
詳しくは、画像の仕様をご覧ください。 |
| 地域 - 国 | 必須 | 宿泊施設がある国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 市区町村 | 必須 | 宿泊施設がある都市。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 位置情報 - 住所を表示 | 必須 | ユーザーに表示されるアドレス。ほとんどのユースケースでは、都市名と、必要に応じて州名または国名を含めることをおすすめします。ユーザーがその場所の近くにいる場合、ユーザーがその場所をよく知っている場合、または都市がクラスタのタイトルに含まれている場合にのみ、番地または近隣地域を含めます。番地を含める場合は、可能な限り略語を使用して簡潔な住所を指定します(例: 「Street」の場合は「St」、「Avenue」の場合は「Ave」)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 番地 | 省略可 | 宿泊施設の番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 地域 - 州 | 省略可 | 宿泊施設が所在する都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 地域 - 郵便番号 | 省略可 | 宿泊施設の郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 近隣 | 省略可 | 宿泊施設の近隣地域(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| バッジ | 省略可 |
各バッジは、フリーテキスト(最大 15 文字)または小さな画像です。 |
|
| バッジ - テキスト | 省略可 | バッジのタイトル 注: バッジにはテキストまたは画像が必要です。 |
自由形式のテキスト 推奨テキストサイズは最大 15 文字 |
| バッジ - 画像 | 省略可 | 小さい画像 特別な UX 処理(画像/動画のサムネイルにバッジをオーバーレイするなど)。 注: バッジにはテキストまたは画像が必要です。 |
詳しくは、画像の仕様をご覧ください。 |
| 説明 | 省略可 | エンティティを説明する 1 つの段落。 注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
| 字幕リスト | 省略可 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。 |
自由形式のテキスト 各字幕の推奨テキストサイズは最大 50 文字 |
| AvailabilityTimeWindow - ローカライズされた開始時間 - タイムスタンプ | 省略可 | 宿泊施設が営業/利用可能になると予想されるエポック タイムスタンプ。 | Joda-Time Instant |
| AvailabilityTimeWindow - ローカライズされた開始時間 - タイムゾーン | 省略可 | 宿泊施設が営業/利用可能であると想定されるタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
| AvailabilityTimeWindow - ローカライズされた終了時刻 - タイムスタンプ | 省略可 | 宿泊施設が営業/利用可能であると予想されるエポック タイムスタンプ。 | Joda-Time Instant |
| AvailabilityTimeWindow - ローカライズされた終了時刻 - タイムゾーン | 省略可 | 宿泊施設が営業/利用可能であると想定されるタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
| 評価 - 最高値 | 省略可 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
| 評価 - 現在値 | 省略可 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
| 評価 - 件数 | 省略可 | 宿泊施設の評価の件数。 注: ユーザーへの表示方法をアプリで制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用して、小さいディスプレイ サイズで切り捨てられないようにすることを検討してください。 |
文字列 |
| 評価 - カウント値 | 省略可 | 宿泊施設の評価の件数。 注: 表示の省略ロジックを自分で処理しない場合は、このフィールドを指定します。カウントとカウント値の両方が存在する場合は、カウントを使用してユーザーに表示します。 |
Long |
| 価格 - CurrentPrice | 条件付きで必須 | 宿泊施設の現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
| Price - StrikethroughPrice | 省略可 | 宿泊施設の元の価格(UI では取り消し線が引かれます) | 自由形式のテキスト |
| 価格のコールアウト | 省略可 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
| DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
| 開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
| 終了タイムスタンプ | 省略可 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
StoreEntity
StoreEntity オブジェクトは、旅行体験に関連する人気の飲食店など、デベロッパー パートナーが公開する個々の店舗を表します。
| 属性 | 必須 / 任意 | 説明 | 形式 |
|---|---|---|---|
| ポスター画像 | 必須 | 画像を少なくとも 1 つ指定する必要があります。 | 詳しくは、画像の仕様をご覧ください。 |
| アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
| タイトル | 任意 | 店舗の名前。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
| 場所 | 任意 | 店舗の場所。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
| コールアウト | 任意 | 店舗のプロモーション、イベント、最新情報を告知するためのコールアウト(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(テキストが長すぎると省略記号が表示されます) |
| コールアウトの注意事項 | 任意 | コールアウトに関する注意事項のテキスト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
| 説明 | 任意 | 店舗の説明。 | 自由形式のテキスト 推奨テキストサイズは 90 文字未満(長すぎるテキストは省略記号が表示されます) |
| カテゴリ | 省略可 | 店舗のカテゴリ。飲食店の場合は、「フランス料理」、「ニュー アメリカン」、「ラーメン」、「高級レストラン」などの料理の種類。 |
自由形式のテキスト 推奨テキストサイズは 45 文字未満(テキストが長すぎると省略記号が表示されます) |
| 評価 - 最高値 | 省略可 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
| 評価 - 現在値 | 省略可 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
| 評価 - 件数 | 省略可 | 宿泊施設の評価の件数。 注: ユーザーへの表示方法をアプリで制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用して、小さいディスプレイ サイズで切り捨てられないようにすることを検討してください。 |
文字列 |
| 評価 - カウント値 | 省略可 | 宿泊施設の評価の件数。 注: 表示の省略ロジックを自分で処理しない場合は、このフィールドを指定します。カウントとカウント値の両方が存在する場合は、カウントを使用してユーザーに表示します。 |
Long |
| DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
| 開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
| 終了タイムスタンプ | 省略可 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
PointOfInterestEntity
| 属性 | 必須 / 任意 | 説明 | 形式 |
|---|---|---|---|
| アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
| タイトル | 必須 | エンティティのタイトル。 | 文字列 推奨テキストサイズ: 最大 50 文字 |
| ポスター画像 | 条件付きで必須 |
複数の画像が指定されている場合、表示される画像は 1 つのみです。 推奨アスペクト比は 16:9 です。 注: エンティティがレコメンデーション クラスタの一部である場合、画像は必須です。バッジが提供されている場合は、画像の上下に 24 dp のセーフスペースを確保します。 |
詳しくは、画像の仕様をご覧ください。 |
| 前回のエンゲージメント時間 | 条件付きで必須 |
ユーザーがこのエンティティを最後に操作したときのエポック タイムスタンプ。 注: エンティティが検索を続けるクラスタの一部である場合、このフィールドは必須です。 |
Joda-Time Instant |
| 地域 - 国 | 条件付きで必須 |
スポットが発生している国。 注: エンティティがレコメンデーション クラスタの一部である場合、このフィールドは必須です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 市区町村 | 条件付きで必須 |
スポットがある市区町村。 注: エンティティがレコメンデーション クラスタの一部である場合、このフィールドは必須です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 位置情報 - 住所を表示 | 条件付きで必須 |
ユーザーに表示されるアドレス。可能な限り略語を使用して、簡潔な住所を指定します(例: 「Street」は「St」、「Avenue」は「Ave」)。この文字列は、ユーザーのデバイスと設定に応じて切り捨てられることがあります。明確に識別できるように、都市名を含めます。 注: エンティティが推奨クラスタの一部である場合、このフィールドは必須です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 35 文字程度 |
| 場所 - 番地 | 省略可 | スポットの番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 地域 - 州 | 省略可 | 対象スポットが所在する都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 地域 - 郵便番号 | 省略可 | スポットの郵便番号(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 近隣 | 省略可 | スポットの周辺地域(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| AvailabilityTimeWindow - ローカライズされた開始時間 - タイムスタンプ | 省略可 | スポットが営業/利用可能になると予想されるエポック タイムスタンプ。 | Joda-Time Instant |
| AvailabilityTimeWindow - ローカライズされた開始時間 - タイムゾーン | 省略可 | スポットが営業/利用可能であると想定されるタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
| AvailabilityTimeWindow - ローカライズされた終了時刻 - タイムスタンプ | 省略可 | 対象スポットが営業/利用可能であると予想されるエポック タイムスタンプ。 | Joda-Time Instant |
| AvailabilityTimeWindow - ローカライズされた終了時刻 - タイムゾーン | 省略可 | スポットが営業/利用可能であると想定されるタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
| バッジ | 省略可 |
各バッジは、フリーテキスト(最大 15 文字)または小さな画像です。 |
|
| バッジ - テキスト | 省略可 | バッジのタイトル 注: バッジにはテキストまたは画像が必要です。 |
自由形式のテキスト 推奨テキストサイズは最大 15 文字 |
| バッジ - 画像 | 省略可 | 小さい画像 特別な UX 処理(画像/動画のサムネイルにバッジをオーバーレイするなど)。 注: バッジにはテキストまたは画像が必要です。 |
詳しくは、画像の仕様をご覧ください。 |
| 説明 | 省略可 | エンティティを説明する 1 つの段落。 注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
| 字幕リスト | 省略可 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。 |
自由形式のテキスト 各字幕の推奨テキストサイズは最大 50 文字 |
| 評価 - 最高値 | 省略可 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
| 評価 - 現在値 | 省略可 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
| 評価 - 件数 | 省略可 | スポットの評価の件数。 注: ユーザーへの表示方法をアプリで制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用して、小さいディスプレイ サイズで切り捨てられないようにすることを検討してください。 |
文字列 |
| 評価 - カウント値 | 省略可 | スポットの評価の件数。 注: 表示の省略ロジックを自分で処理しない場合は、このフィールドを指定します。カウントとカウント値の両方が存在する場合は、カウントを使用してユーザーに表示します。 |
Long |
| 価格 - CurrentPrice | 条件付きで必須 |
スポットのチケット/入場パスの現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
| Price - StrikethroughPrice | 省略可 | スポットのチケット/入場パスの元の価格。 | 自由形式のテキスト |
| 価格のコールアウト | 省略可 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 |
自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
| コンテンツ カテゴリ | 省略可 | エンティティ内のコンテンツのカテゴリを記述します。 | 有効な列挙型のリスト
詳しくは、コンテンツ カテゴリのセクションをご覧ください。 |
| DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
| 開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
| 終了タイムスタンプ | 省略可 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
RestaurantReservationEntity
| 属性 | 必須 / 任意 | 説明 | 形式 |
|---|---|---|---|
| アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
| タイトル | 必須 | エンティティのタイトル。 | 文字列 推奨テキストサイズ: 最大 50 文字 |
| ローカライズされた予約開始時間 - タイムスタンプ | 必須 | 予約の開始予定のエポック タイムスタンプ。 | Joda-Time Instant |
| ローカライズされた予約開始時間 - タイムゾーン | 必須 | 予約の開始が予定されているタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
| 地域 - 国 | 必須 | レストランが所在する国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 市区町村 | 必須 | レストランがある市区町村。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 位置情報 - 住所を表示 | 必須 | ユーザーに表示されるレストランの住所。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 番地 | 省略可 | レストランの番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 地域 - 州 | 省略可 | レストランが所在する都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 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 |
| 地域 - 国 | 条件付きで必須 | イベントが開催される国。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 市区町村 | 条件付きで必須 | イベントが開催される都市。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 位置情報 - 住所を表示 | 条件付きで必須 | イベントが開催される住所または会場名。ユーザーに表示されます。 注: これは、IN_PERSON または HYBRID のイベントに必要です。 |
自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 番地 | 省略可 | イベントが開催される場所の番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 地域 - 州 | 省略可 | イベントが開催される都道府県(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 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 | 条件付きで必須 |
イベントのチケット/パスの現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
| Price - StrikethroughPrice | 省略可 | イベントのチケット/パスの元の価格。 | 自由形式のテキスト |
| 価格のコールアウト | 省略可 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
| 評価 - 最高値 | 省略可 | 段階別評価の最高値。 現在の評価値も指定する場合は必須です。 |
0.0 以上の数値。 |
| 評価 - 現在値 | 省略可 | 段階別評価の現在の値。 評価の最高値も指定する場合は必須です。 |
0.0 以上の数値。 |
| 評価 - 件数 | 省略可 | イベントの評価の件数。 注: ユーザーへの表示方法をアプリで制御する場合は、このフィールドを指定します。ユーザーに表示できる簡潔な文字列を指定します。たとえば、カウントが 1,000,000 の場合は、1M などの略語を使用して、小さいディスプレイ サイズで切り捨てられないようにすることを検討してください。 |
文字列 |
| 評価 - カウント値 | 省略可 | イベントの評価の件数。 注: 表示の省略ロジックを自分で処理しない場合は、このフィールドを指定します。カウントとカウント値の両方が存在する場合は、カウントを使用してユーザーに表示します。 |
Long |
| コンテンツ カテゴリ | 省略可 | エンティティ内のコンテンツのカテゴリを記述します。 | 有効な列挙型のリスト
詳しくは、コンテンツ カテゴリのセクションをご覧ください。 |
| DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
| 開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
| 終了タイムスタンプ | 省略可 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
LodgingReservationEntity
| 属性 | 必須 / 任意 | 説明 | 形式 |
|---|---|---|---|
| アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
| タイトル | 必須 | エンティティのタイトル。 | 自由形式のテキスト。例: 「12 月 12 日からのご滞在」 推奨テキストサイズ: 最大 50 文字 |
| ローカライズされたチェックイン時刻 - タイムスタンプ | 必須 | 予約のチェックイン時間を表すエポック タイムスタンプ。 | Joda-Time Instant |
| ローカライズされたチェックイン時刻 - タイムゾーン | 必須 | 予約のチェックイン時間のタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
| ローカライズされたチェックアウト時刻 - タイムスタンプ | 必須 | 予約のチェックアウト時間を表すエポック タイムスタンプ。 | Joda-Time Instant |
| ローカライズされたチェックアウト時刻 - タイムゾーン | 必須 | 予約のチェックアウト時間のタイムゾーン。 |
Joda-Time DateTimeZone 詳しくは、タイムゾーンの仕様をご覧ください。 |
| 地域 - 国 | 必須 | 宿泊施設がある国。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 場所 - 市区町村 | 必須 | 宿泊施設がある市区町村。 | 自由形式のテキスト 推奨テキストサイズ: 最大 20 文字程度 |
| 位置情報 - 住所を表示 | 必須 | ユーザーに表示されるアドレス。可能な限り略語(「Street」の場合は「St」、「Avenue」の場合は「Ave」など)を使用して、簡潔な住所を指定します。この文字列は、ユーザーのデバイスと設定に応じて切り捨てられることがあります。明確に識別できるように、都市名を含めます。 | 自由形式のテキスト 推奨テキストサイズ: 最大 35 文字程度 |
| 場所 - 番地 | 省略可 | 宿泊施設の番地(該当する場合)。 | 自由形式のテキスト 推奨テキストサイズ: 最大 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 文字未満(長すぎるテキストは省略記号が表示されます) |
| DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
| 開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
| 終了タイムスタンプ | 省略可 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
TransportationReservationEntity
| 属性 | 必須 / 任意 | 説明 | 形式 |
|---|---|---|---|
| アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
| タイトル | 必須 | エンティティのタイトル。 | 自由形式のテキスト。例: 「SFO から 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 | 条件付きで必須 | 予約の現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
| Price - StrikethroughPrice | 省略可 | 予約の元の価格(UI では取り消し線が引かれます) | 自由形式のテキスト |
| 価格のコールアウト | 省略可 | プロモーション、イベント、メンバー割引(利用可能な場合)をアピールするための価格コールアウト。 | 自由形式のテキスト 推奨テキストサイズは 45 文字未満(長すぎるテキストは省略記号が表示されます) |
| DisplayTimeWindow(省略可)- コンテンツがサーフェスに表示される時間帯を設定します | |||
| 開始タイムスタンプ | 任意 |
このエポック タイムスタンプ以降にコンテンツがサーフェスに表示されます。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
| 終了タイムスタンプ | 省略可 |
このエポック タイムスタンプ以降は、コンテンツがサーフェスに表示されなくなります。 設定されていない場合、コンテンツはサーフェスに表示されます。 |
エポック タイムスタンプ(ミリ秒) |
VehicleRentalReservationEntity
| 属性 | 必須 / 任意 | 説明 | 形式 |
|---|---|---|---|
| アクション URI | 必須 |
プロバイダ アプリ内のエンティティへのディープリンク。 注: アトリビューションにはディープリンクを使用できます。 よくある質問をご覧ください |
URI |
| タイトル | 必須 | エンティティのタイトル。 | 自由形式のテキスト。例: 「Avis Union Square SF」 推奨テキストサイズ: 最大 50 文字 |
| ローカライズされた迎車時間 - タイムスタンプ | 必須 | 予約の受け取り時間を表すエポック タイムスタンプ。 | 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 文字程度 |
| サービス提供者 - 名前 | 省略可 |
サービス提供者の名前。 注: サービス プロバイダには、テキストまたは画像のいずれかが必要です。 |
自由形式のテキスト。例: 「Avis Car Rental」 |
| サービス提供者 - 画像 | 省略可 |
サービス提供者のロゴ/画像。 注: サービス プロバイダには、テキストまたは画像のいずれかが必要です。 |
詳しくは、画像の仕様をご覧ください。 |
| ポスター画像 | 省略可 |
複数の画像が指定されている場合、表示される画像は 1 つのみです。推奨されるアスペクト比は 16:9 です。 |
詳しくは、画像の仕様をご覧ください。 |
| 説明 | 省略可 | エンティティを説明する 1 つの段落。 注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。 |
自由形式のテキスト 推奨テキストサイズ: 180 文字 |
| 字幕リスト | 省略可 | 最大 3 つのサブタイトル。各サブタイトルは 1 行のテキストです。 注: ユーザーには、説明またはサブタイトル リストのいずれかが表示されます。両方が表示されることはありません。 |
自由形式のテキスト 各字幕の推奨テキストサイズは最大 50 文字 |
| 確認 ID | 省略可 | 車両レンタル予約の確認 ID。 | 自由形式のテキスト |
| 価格 - CurrentPrice | 条件付きで必須 | 予約の現在の価格。 取り消し線が引かれた価格を指定する場合は必須です。 |
自由形式のテキスト |
| Price - 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_EDUCATIONTYPE_SPORTSTYPE_MOVIES_AND_TV_SHOWSTYPE_BOOKSTYPE_AUDIOBOOKSTYPE_MUSICTYPE_DIGITAL_GAMESTYPE_TRAVEL_AND_LOCALTYPE_HOME_AND_AUTOTYPE_BUSINESSTYPE_NEWSTYPE_FOOD_AND_DRINKTYPE_SHOPPINGTYPE_HEALTH_AND_FITENESSTYPE_MEDICALTYPE_PARENTINGTYPE_DATING
Google が画像にアクセスできるようにするため、画像は公開 CDN でホストする必要があります。
コンテンツ カテゴリを使用するためのガイドライン
- ArticleEntity や GenericFeaturedEntity などの一部のエンティティは、どのコンテンツ カテゴリでも使用できます。EventEntity、EventReservationEntity、PointOfInterestEntity などの他のエンティティの場合、これらのカテゴリのサブセットのみが対象となります。リストに入力する前に、エンティティ タイプに適したカテゴリのリストを確認してください。
一部のコンテンツ カテゴリでは、汎用エンティティと ContentCategory の組み合わせではなく、特定のエンティティ タイプを使用します。
- TYPE_MOVIES_AND_TV_SHOWS - 汎用エンティティを使用する前に、Watch 統合ガイドのエンティティを確認してください。
- TYPE_BOOKS - 汎用エンティティを使用する前に、EbookEntity を確認してください。
- TYPE_AUDIOBOOKS - 汎用エンティティを使用する前に、AudiobookEntity を確認してください。
- TYPE_SHOPPING - 汎用エンティティを使用する前に、ShoppingEntity を確認してください。
- TYPE_FOOD_AND_DRINK - 汎用エンティティを使用する前に、フード統合ガイドのエンティティを確認してください。
ContentCategory フィールドは省略可能です。コンテンツが前述のカテゴリのいずれにも属していない場合は、空白のままにします。
複数のコンテンツ カテゴリを指定する場合は、コンテンツとの関連性の高い順に指定し、最も関連性の高いコンテンツ カテゴリをリストの先頭に配置します。
ステップ 2: クラスタデータを提供する
WorkManager などを使用して、コンテンツ公開ジョブをバックグラウンドで実行し、定期的に、またはイベントごとに(ユーザーがアプリを開いたときや、カートに商品を追加したときなど)スケジュールを設定することをおすすめします。
AppEngageTravelClient はクラスタの公開を行います。
クライアントでクラスタを公開するには、次の API があります。
isServiceAvailablepublishRecommendationClusterspublishFeaturedClusterpublishReservationClusterpublishContinueSearchClusterpublishUserAccountManagementRequestupdatePublishStatusdeleteRecommendationsClustersdeleteFeaturedClusterdeleteReservationClusterdeleteContinueSearchClusterdeleteUserManagementClusterdeleteClusters
isServiceAvailable
この API は、サービスを統合に使用できるかどうか、コンテンツをデバイスに表示できるかどうかを確認するために使用されます。
Engage SDK v1.6.0 以降の場合(推奨)
Android のスキル
GitHub で表示Engage SDK の統合
android skills add engage-sdk-integrationUse the engage-sdk-integration skill to use Engage SDK 1.6.0 and refactor isServiceAvailable to pass ServiceAvailabilityRequest for publishing all cluster types.公開するクラスタタイプごとにサービスの提供状況を確認できます。isServiceAvailable API は、サービス可用性を確認する必要があるクラスタタイプを含むリクエスト オブジェクト ServiceAvailabilityRequest を受け入れます。ServiceAvailabilityRequest に必要な ClusterType 列挙値は、次の表で確認できます。
| クラスタタイプ | クラスタタイプ定数 | 整数値 |
|---|---|---|
| 不明 | TYPE_UNKNOWN |
0 |
| おすすめコンテンツ クラスタ | TYPE_RECOMMENDATION |
1 |
| 注目コンテンツ クラスタ | TYPE_FEATURED |
2 |
| 継続クラスタ | TYPE_CONTINUATION |
3 |
| ユーザー管理クラスタ | TYPE_ENGAGEMENT |
8 |
| サブスクリプション クラスタ | 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データが削除されます。 - リクエストのデータが解析されて、更新された注目コンテンツ クラスタに保存されます。
エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
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());
deleteRecommendationsClusters
この API は、おすすめコンテンツ クラスタのコンテンツを削除するために使用されます。
Kotlin
client.deleteRecommendationsClusters()
Java
client.deleteRecommendationsClusters();
サービスがリクエストを受信すると、おすすめコンテンツ クラスタから既存のデータが削除されます。エラーが発生した場合は、リクエスト全体が拒否され、それまでの状態が維持されます。
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 が確認したら、おすすめコンテンツ、注目コンテンツ、予約、検索を続けるの各クラスタが公開され、ユーザーに表示されます。