Google 正在建構的裝置端途徑會依產業別將使用者的應用程式分門別類,並提供全新沉浸式體驗,可供使用者取用及瀏覽個人化應用程式內容。這個全螢幕體驗可讓開發合作夥伴 有機會在外部的專屬頻道中,展示最精彩的多媒體內容 他們的應用程式。本指南適用對象為開發合作夥伴,提供下列操作說明: 整合他們的旅遊資訊與事件內容,方法是使用 Engage SDK 填入 新的表面區域
整合詳情
術語
這項整合包含以下三個叢集類型:推薦、 精選和接續。
推薦叢集會顯示個人化的旅遊與活動建議 則可向個別開發合作夥伴收費這些建議的 個人化或一般化 (例如熱門項目)。使用 以顯示文章、活動、住宿或觀光景點 最佳化建議。
- 推薦叢集可以由
ArticleEntity
、EventEntity
、 有LodgingEntity
、PointOfInterestEntity
或StoreEntity
則商店資訊,但 而非混合不同的實體類型
推薦內容採用以下結構:
推薦叢集:此 UI 檢視畫面包含相同開發合作夥伴提供的一組推薦內容。
實體:代表叢集中單一項目的物件。這個 整合提供的一些實體 推薦叢集:
ArticleEntity:ArticleEntity 代表建議內容 與旅遊和事件。這類模型可用於 文章、網誌文章、行銷內容、新聞片段等
圖 1:顯示建議叢集中單一 ArticleEntity 的使用者介面。 EventEntity:EventEntity 代表 事件開始時間是非常重要的資訊 需要傳達的資訊
圖 2:顯示其中單一 EventEntity 的使用者介面 推薦叢集。 LodgingEntity:LodgingEntity 代表住宿地點, 做為飯店、公寓、長期度假屋 租借。
圖 3:顯示單一 LodgingEntity 的 UI 套用不同的建議 StoreEntity:StoreEntity 代表商店、餐廳、咖啡廳 例如介紹餐廳或商店 是非常重要的一環 使用者。
圖 4:顯示內部單一 StoreEntity 的 UI 推薦叢集。 PointOfInterestEntity:PointOfInterestEntity 代表 觀光景點,例如加油站、活動場地、主題樂園 博物館、觀光景點、健行步道等 其中位置資訊是很重要的 傳達給使用者不得用於住宿、商店或 用餐場所
圖 5:顯示單一使用者介面 建議叢集內的 PointOfInterestEntity。
- 推薦叢集可以由
「接續」叢集會顯示使用者最近互動的內容 將多個開發合作夥伴納入一個 UI 群組中。每位開發合作夥伴 最多可在「接續」中播送 10 個實體 物件
接續內容可採用以下結構:
ArticleEntity:ArticleEntity 代表內容建議 與旅遊和事件。這個實體可用來代表 使用者想要閱讀的未閱讀新聞文章或其他內容 他們就會從上次離開的地方繼續耗用例如:新聞摘要、網誌文章 旅遊目的地或事件的程式碼片段。
圖 6. 顯示以下其中單一 ArticleEntity 的使用者介面: 也就是接續叢集 RestaurantReservationEntity:RestaurantReservationEntity 代表 餐廳或咖啡店的訂位資訊,並協助使用者追蹤即將到來的餐廳或咖啡店 進行中的餐廳訂位。
圖 7. 顯示單一單項的 UI 接續叢集內的 RestaurantReservationEntity。 EventReservationEntity:EventReservationEntity 代表 預訂活動,並協助使用者追蹤即將到來或正在進行的活動 活動預訂。事件包括但不限於 包括:
- 體育賽事,例如預訂足球比賽預訂
- 遊戲活動,例如預約電競活動
- 娛樂活動,例如在電影院預約電影 音樂會, 劇場, 書簽署
- 旅遊或搜尋點預約資訊,例如導覽、博物館 支援單
- 社交 / 研討會 / 會議預訂
- 教育 / 訓練課程預約
圖 8.顯示單一單項的 UI 接續叢集內的 EventReservationEntity。 LodgingReservationEntity:LodgingEntityReservation 代表 預訂旅遊住宿,可協助使用者追蹤即將到來或 持續預訂的飯店或度假民宿訂房。
圖 9.顯示單一單項的 UI 接續叢集內的 LodgingReservationEntity。 TransportationReservationEntity:TransportationReservationEntity 代表以任何交通方式預訂交通工具,協助使用者 追蹤近期或進行中航班、渡輪、火車、巴士、 例如叫車或郵輪
圖 10.顯示單一單項的 UI 接續叢集內的 TransportationReservationEntity。 VehiclerentReservationEntity:VehiclerentReservationEntity 代表租車預約,可協助使用者追蹤即將到來的租車資訊 或進行中的租車預約。
圖 11.顯示單一單項的 UI 接續叢集內的 VehiclerentReservationEntity。
「精選」叢集是一種 UI 檢視畫面,會顯示選定的英雄 單一 UI 群組中多個開發合作夥伴提供的
GenericFeaturedEntity
。 這個單一精選叢集會顯示在靠近頂端的 使用者介面,優先放置在所有推薦叢集的上方。每項 開發合作夥伴可以播送支援的單一實體 類型,其中包含許多不同類型的實體 (類型可能不同) 在精選叢集中有多個應用程式開發人員GenericGenericEntity (通用精選實體):泛型精選實體與 該精選項目中的推薦項目應用於單一 開發人員的熱門內容,且應呈現 有趣且切合使用者需求的重要內容
圖 12:UI,顯示具有 GenericGenericEntity 清單
事前作業
最低 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'
}
摘要
這項設計是以 繫結服務。
用戶端可發布的資料受到不同叢集類型的限制,如下所示:
叢集類型 | 叢集限制 | 單一叢集中的實體數量下限 | 單一叢集中的實體數量上限 |
---|---|---|---|
推薦叢集 | 最多 5 個 | 至少 5 則 | 最多 25 個 (ArticleEntity 、EventEntity 、
LodgingEntity 、StoreEntity 或
PointOfInterestEntity ) |
接續叢集 | 最多 1 個 | 至少 1 個 | 最多 10 個 (ArticleEntity 、
RestaurantReservationEntity
EventReservationEntity ,
LodgingReservationEntity ,
TransportationReservationEntity ,或
VehicleRentalReservationEntity ) |
精選叢集 | 最多 1 個 | 至少 1 個 | 最多 10 個 (GenericFeaturedEntity ) |
步驟 1:提供實體資料
SDK 定義了不同實體,用來代表各種項目類型。我們樂於 以下有關「旅遊」與「旅遊業」的實體事件類別:
GenericFeaturedEntity
ArticleEntity
EventEntity
LodgingEntity
StoreEntity
PointOfInterestEntity
RestaurantReservationEntity
EventReservationEntity
LodgingReservationEntity
TransportationReservationEntity
VehicleRentalReservationEntity
下方圖表列出各類型的可用屬性和必要性。
GenericFeaturedEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
代表圖片 | 必要 | 如果您提供多張圖片,我們只會顯示 1 張圖片。 建議長寬比為 16:9 注意:如有提供識別證,請確保安全空間為 24 圖片頂端和底部兩者的 dp |
如需相關指南,請參閱「圖片規格」一節。 |
標題 | 選用 | 實體的名稱。 | 任意文字 建議文字長度:50 個半形字元 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
徽章 | 選用 | 每個徽章可以是任意文字 (最多 15 個半形字元) 或小型圖片。 圖片/影片上方的特殊使用者體驗處理方式,例如徽章 疊加在圖片上
|
|
徽章 - 文字 | 選用 | 徽章標題 注意:徽章必須提供文字或圖片 |
任意文字 建議文字長度:最多 15 個半形字元 |
徽章 - 圖片 | 選用 | 小型圖片 特殊使用者體驗的處理方式,例如圖片/影片上的徽章重疊 縮圖。 注意:徽章必須提供文字或圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
內容類別 | 選用 | 說明實體中的內容類別, | 列舉清單 請參閱「內容類別」一節 。 |
ArticleEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 任意文字 建議文字長度:最多 50 個半形字元 |
代表圖片 | 選用 | 如果您提供多張圖片,我們只會顯示 1 張圖片。 建議長寬比為 16:9 注意:強烈建議使用圖片。如果徽章 因此,請務必確保 圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
來源 - 書名 | 選用 | 作者、機構或檢舉者的名稱 | 任意文字 建議文字長度:最多 25 個半形字元 |
來源 - 圖片 | 選用 | 來源圖片,例如作者、機構、記者 | 如需相關指南,請參閱「圖片規格」一節。 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
徽章 | 選用 | 每個徽章可以是任意文字 (最多 15 個半形字元) 或小型圖片。 以特殊使用者體驗處理圖片/影片,例如徽章 疊加在圖片上
|
|
徽章 - 文字 | 選用 | 徽章標題 注意:徽章必須提供文字或圖片 |
任意文字 建議文字長度:最多 15 個半形字元 |
徽章 - 圖片 | 選用 | 小型圖片 特殊使用者體驗的處理方式,例如圖片/影片上的徽章重疊 縮圖。 注意:徽章必須提供文字或圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
內容發布時間 | 選用 | 這是內容發生當下的 Epoch 時間戳記 (以毫秒為單位), 是否已在應用程式中發布 / 更新。 | 以毫秒為單位的 Epoch 紀元時間戳記 |
上次互動時間 | 必要 (有條件) | 使用者進行互動的 Epoch 時間戳記 (以毫秒為單位) 這是上次使用這個實體的時間 注意:如果這個實體屬於 持續性叢集 |
以毫秒為單位的 Epoch 紀元時間戳記 |
進度百分比 | 必要 (有條件) | 到目前為止,使用者已觀看的完整內容百分比。 注意:如果這個實體屬於 持續性叢集 |
介於 0 到 100 (含 0 和 100) 之間的整數值。 |
內容類別 | 選用 | 說明實體中的內容類別, | 列舉清單 請參閱「內容類別」一節 。 |
EventEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 字串 建議文字長度:最多 50 個半形字元 |
開始時間 | 必要 |
事件預計開始的 Epoch 時間戳記。 注意:時間值是以毫秒為單位。 |
以毫秒為單位的 Epoch 紀元時間戳記 |
事件模式 | 必要 | 這個欄位用於表示活動是線上、現場或 兩者。 |
列舉:VIRTUAL、IN_PERSON 或 HYBRID |
代表圖片 | 必要 | 如果您提供多張圖片,我們只會顯示 1 張圖片。 建議長寬比為 16:9 注意:強烈建議使用圖片。如果徽章 因此,請務必確保 圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
地點 - 國家/地區 | 必要 (有條件) | 舉辦活動的國家/地區。 注意:對於 IN_PERSON 或 IN_PERSON 的活動,此為必要欄位。 混合辦公 |
任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 城市 | 必要 (有條件) | 事件發生的城市。 注意:對於 IN_PERSON 或 IN_PERSON 的活動,此為必要欄位。 混合辦公 |
任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 顯示地址 | 必要 (有條件) | 活動地點的地址或場地名稱 向使用者顯示 注意:對於 IN_PERSON 或 IN_PERSON 的活動,此為必要欄位。 混合辦公 |
任意文字 建議文字長度:最多 20 個半形字元 |
地點 - 街道地址 | 選用 | 活動地點的街道地址 (如有) 託管。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 州/省 | 選用 | 活動時所在的州或省 (如適用) 託管。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 郵遞區號 | 選用 | 活動地點的郵遞區號 (如適用) 託管。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 社區 | 選用 | 舉辦活動的社區 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
結束時間 | 選用 |
事件預計結束的 Epoch 時間戳記。 注意:時間值是以毫秒為單位。 |
以毫秒為單位的 Epoch 紀元時間戳記 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
徽章 | 選用 |
每個徽章可以是任意文字 (最多 15 個半形字元) 或小型圖片。 |
|
徽章 - 文字 | 選用 | 徽章標題 注意:徽章必須提供文字或圖片 |
任意文字 建議文字長度:最多 15 個半形字元 |
徽章 - 圖片 | 選用 | 小型圖片 特殊使用者體驗的處理方式,例如圖片/影片上的徽章重疊 縮圖。 注意:徽章必須提供文字或圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
價格 - 目前價格 | 在特定情況下為必要 |
活動票券/票證目前的價格。 如果提供了附帶刪除線的價格,則必須提供這項屬性。 |
任意文字 |
價格 - 加上刪除線的價格 | 選用 | 活動票券/票證的原始價格。 | 任意文字 |
價格摘要 | 選用 | 顯示促銷、活動或會員折扣的價格摘要 (如有)。 | 任意文字 建議文字長度:最多 45 個半形字元 (文字過長) 可能會顯示刪節號) |
內容類別 | 選用 | 說明實體中的內容類別, | 符合資格的列舉清單
請參閱「內容類別」一節 。 |
LodgingEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 字串 建議文字長度:最多 50 個半形字元 |
代表圖片 | 必要 |
如果您提供多張圖片,我們只會顯示 1 張圖片。推薦方案 顯示比例為 16:9 注意:如有提供識別證,請確保安全空間為 24 圖片頂端和底部兩者的 dp |
如需相關指南,請參閱「圖片規格」一節。 |
地點 - 國家/地區 | 必要 | 住宿地點的國家/地區。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 城市 | 必要 | 住宿地點的城市。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 顯示地址 | 必要 | 要向使用者顯示的住宿地址。 | 任意文字 建議文字長度:最多 20 個半形字元 |
地點 - 街道地址 | 選用 | 飯店的街道地址 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 州/省 | 選用 | 住宿地點所在的州或省 (如適用) 定位。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 郵遞區號 | 選用 | 住宿地點的郵遞區號 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 社區 | 選用 | 住宿地點 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
徽章 | 選用 |
每個徽章可以是任意文字 (最多 15 個半形字元) 或小型圖片。 |
|
徽章 - 文字 | 選用 | 徽章標題 注意:徽章必須提供文字或圖片 |
任意文字 建議文字長度:最多 15 個半形字元 |
徽章 - 圖片 | 選用 | 小型圖片 特殊使用者體驗的處理方式,例如圖片/影片上的徽章重疊 縮圖。 注意:徽章必須提供文字或圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
AvailabilityTimeWindow - 開始時間 | 選用 | 飯店預計入住時間的 Epoch 時間戳記 (以毫秒為單位) 開放/可用 | 以毫秒為單位的 Epoch 紀元時間戳記 |
AvailabilityTimeWindow - 結束時間 | 選用 | 住宿預訂前的 Epoch 時間戳記,以毫秒為單位 設為開放/可供使用 | 以毫秒為單位的 Epoch 紀元時間戳記 |
評分 - 最高值 | 選用 | 分級量表的最高值。 如果同時提供目前的評分值,則必須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 目前的值 | 選用 | 目前分級量表的值。 如果同時提供最高評分值,則須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 計算 | 選用 | 住宿飯店的評分次數。 注意:如果您的應用程式需要 管理向使用者顯示的方式提供簡明扼要 向使用者顯示的字串。舉例來說,如果計數為 1,000,000,請考慮使用 100 萬等縮寫,但是不會 但在螢幕較小的情況下無法完整顯示 |
字串 |
評分 - 計數值 | 選用 | 住宿飯店的評分次數。 注意:如果不想處理相關問題,請提供這個欄位 顯示縮寫邏輯如果同時包含次數和計數值 搜尋時,我們會使用「計數」向使用者顯示 |
長 |
價格 - 目前價格 | 在特定情況下為必要 | 住宿目前的價格。 如果提供了附帶刪除線的價格,則必須提供這項屬性。 |
任意文字 |
價格 - 加上刪除線的價格 | 選用 | 住宿優惠的原始價格,在 第一種是使用無代碼解決方案 AutoML 透過使用者介面建立機器學習模型 | 任意文字 |
價格摘要 | 選用 | 顯示促銷、活動或會員折扣的價格摘要 (如有)。 | 任意文字 建議文字長度:最多 45 個半形字元 (文字過長) 可能會顯示刪節號) |
StoreEntity
StoreEntity
物件代表開發合作夥伴要發布的個別商店,例如餐廳或雜貨店。
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
代表圖片 | 必要 | 至少須提供一張圖片 | 如需相關指南,請參閱「圖片規格」一節。 |
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 選用 | 商店名稱。 | 任意文字 建議文字長度:最多 45 個半形字元,過長部分會以刪節號顯示 |
位置 | 選用 | 商店的位置。 | 任意文字 建議文字長度:最多 45 個半形字元,過長部分會以刪節號顯示 |
摘要 | 選用 | 如果有,會是用來主打商店的促銷、活動或更新。 | 任意文字 建議文字長度:最多 45 個半形字元,過長部分會以刪節號顯示 |
摘要附屬細則 | 選用 | 摘要的附屬細則文字。 | 任意文字 建議文字長度:最多 45 個半形字元,過長部分會以刪節號顯示 |
說明 | 選用 | 商店說明。 | 任意文字 建議文字長度:最多 90 個半形字元,過長部分會以刪節號顯示 |
評分 - 最高值 | 選用 | 分級量表的最高值。 如果同時提供目前的評分值,則必須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 目前的值 | 選用 | 目前分級量表的值。 如果同時提供最高評分值,則須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 計算 | 選用 | 住宿飯店的評分次數。 注意:如果您的應用程式需要 管理向使用者顯示的方式提供簡明扼要 向使用者顯示的字串。舉例來說,如果計數為 1,000,000,請考慮使用 100 萬等縮寫,但是不會 但在螢幕較小的情況下無法完整顯示 |
字串 |
評分 - 計數值 | 選用 | 住宿飯店的評分次數。 注意:如果不想處理相關問題,請提供這個欄位 顯示縮寫邏輯如果同時包含次數和計數值 搜尋時,我們會使用「計數」向使用者顯示 |
長 |
PointOfInterestEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 字串 建議文字長度:最多 50 個半形字元 |
代表圖片 | 必要 | 如果您提供多張圖片,我們只會顯示 1 張圖片。 建議長寬比為 16:9 注意:強烈建議使用圖片。如果徽章 因此請確保 圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
地點 - 國家/地區 | 必要 | 搜尋點的發生國家/地區。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 城市 | 必要 | 搜尋點發生的城市。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 顯示地址 | 必要 | 會在 內容。 | 任意文字 建議文字長度:最多 20 個半形字元 |
地點 - 街道地址 | 選用 | 搜尋點的街道地址 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 州/省 | 選用 | 搜尋點所在的州或省 (如適用) 定位。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 郵遞區號 | 選用 | 搜尋點的郵遞區號 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 社區 | 選用 | 搜尋點的鄰裡 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
AvailabilityTimeWindow - 開始時間 | 選用 | 搜尋點以毫秒為單位的 Epoch 時間戳記, 分別處於開放/可供使用的狀態。 | 以毫秒為單位的 Epoch 紀元時間戳記 |
AvailabilityTimeWindow - 結束時間 | 選用 | Epoch 時間戳記 (以毫秒為單位),直到搜尋點為止 分別處於開放/可供使用的狀態。 | 以毫秒為單位的 Epoch 紀元時間戳記 |
徽章 | 選用 |
每個徽章可以是任意文字 (最多 15 個半形字元) 或小型圖片。 |
|
徽章 - 文字 | 選用 | 徽章標題 注意:徽章必須提供文字或圖片 |
任意文字 建議文字長度:最多 15 個半形字元 |
徽章 - 圖片 | 選用 | 小型圖片 特殊使用者體驗的處理方式,例如圖片/影片上的徽章重疊 縮圖。 注意:徽章必須提供文字或圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
評分 - 最高值 | 選用 | 分級量表的最高值。 如果同時提供目前的評分值,則必須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 目前的值 | 選用 | 目前分級量表的值。 如果同時提供最高評分值,則須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 計算 | 選用 | 搜尋點的評分次數。 注意:如果您的應用程式需要 管理向使用者顯示的方式提供簡明扼要 向使用者顯示的字串。舉例來說,如果計數為 1,000,000,請考慮使用 100 萬等縮寫,但是不會 但在螢幕較小的情況下無法完整顯示 |
字串 |
評分 - 計數值 | 選用 | 搜尋點的評分次數。 注意:如果不想處理相關問題,請提供這個欄位 顯示縮寫邏輯如果同時包含次數和計數值 搜尋時,我們會使用「計數」向使用者顯示 |
長 |
價格 - 目前價格 | 在特定情況下為必要 |
兩點的票券/通行證目前價格 興趣。 如果提供了附帶刪除線的價格,則必須提供這項屬性。 |
任意文字 |
價格 - 加上刪除線的價格 | 選用 | 搜尋點票券/入場證的原始價格。 | 任意文字 |
價格摘要 | 選用 | 顯示促銷、活動或會員折扣的價格摘要 (如有)。 |
任意文字 建議文字長度:最多 45 個半形字元 (文字過長, 顯示刪節號) |
內容類別 | 選用 | 說明實體中的內容類別, | 符合資格的列舉清單
請參閱「內容類別」一節 。 |
RestaurantReservationEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 字串 建議文字長度:最多 50 個半形字元 |
預留項目開始時間 | 必要 | 預留項目預計達到下列時間的 Epoch 時間戳記 (以毫秒為單位) 。 | 以毫秒為單位的 Epoch 紀元時間戳記 |
地點 - 國家/地區 | 必要 | 餐廳舉辦的國家/地區。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 城市 | 必要 | 提供餐廳的城市。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 顯示地址 | 必要 | 會顯示在 內容。 | 任意文字 建議文字長度:最多 20 個半形字元 |
地點 - 街道地址 | 選用 | 餐廳的街道地址 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 州/省 | 選用 | 餐廳所在的州或省 (如有) 定位。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 郵遞區號 | 選用 | 餐廳的郵遞區號 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 社區 | 選用 | 餐廳的社區 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
代表圖片 | 選用 | 如果您提供多張圖片,我們只會顯示 1 張圖片。推薦方案 顯示比例為 16:9 | 如需相關指南,請參閱「圖片規格」一節。 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
資料表大小 | 選用 | 預訂群組的人數 | 整數 >0 分 |
EventReservationEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 字串 建議文字長度:最多 50 個半形字元 |
開始時間 | 必要 |
事件預計開始的 Epoch 時間戳記。 注意:時間值是以毫秒為單位。 |
以毫秒為單位的 Epoch 紀元時間戳記 |
事件模式 | 必要 | 這個欄位用於表示活動是線上、現場或 兩者。 |
列舉:VIRTUAL、IN_PERSON 或 HYBRID |
地點 - 國家/地區 | 必要 (有條件) | 舉辦活動的國家/地區。 注意:對於 IN_PERSON 或 IN_PERSON 的活動,此為必要欄位。 混合辦公 |
任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 城市 | 必要 (有條件) | 事件發生的城市。 注意:對於 IN_PERSON 或 IN_PERSON 的活動,此為必要欄位。 混合辦公 |
任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 顯示地址 | 必要 (有條件) | 活動地點的地址或場地名稱 向使用者顯示 注意:對於 IN_PERSON 或 IN_PERSON 的活動,此為必要欄位。 混合辦公 |
任意文字 建議文字長度:最多 20 個半形字元 |
地點 - 街道地址 | 選用 | 活動地點的街道地址 (如有) 託管。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 州/省 | 選用 | 活動時所在的州或省 (如適用) 託管。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 郵遞區號 | 選用 | 活動地點的郵遞區號 (如適用) 託管。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 社區 | 選用 | 舉辦活動的社區 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
代表圖片 | 選用 | 如果您提供多張圖片,我們只會顯示 1 張圖片。 建議長寬比為 16:9 注意:強烈建議使用圖片。如果徽章 因此,請務必確保 圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
結束時間 | 選用 |
事件預計結束的 Epoch 時間戳記。 注意:時間值是以毫秒為單位。 |
以毫秒為單位的 Epoch 紀元時間戳記 |
服務供應商 - 名稱 | 選用 |
服務供應商的名稱。 注意:服務必須提供文字或圖片 。 |
任意文字。例如活動發起人/導覽的名稱 |
服務供應商 - 圖片 | 選用 |
服務供應商的標誌/圖片。 注意:服務必須提供文字或圖片 。 |
如需相關指南,請參閱「圖片規格」一節。 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
徽章 | 選用 |
每個徽章可以是任意文字 (最多 15 個半形字元) 或小型圖片。 |
|
徽章 - 文字 | 選用 | 徽章標題 注意:徽章必須提供文字或圖片 |
任意文字 建議文字長度:最多 15 個半形字元 |
徽章 - 圖片 | 選用 | 小型圖片 特殊使用者體驗的處理方式,例如圖片/影片上的徽章重疊 縮圖。 注意:徽章必須提供文字或圖片 |
如需相關指南,請參閱「圖片規格」一節。 |
預留項目 ID | 選用 | 活動預訂的預訂 ID。 | 任意文字 |
價格 - 目前價格 | 在特定情況下為必要 |
活動票券/票證目前的價格。 如果提供了附帶刪除線的價格,則必須提供這項屬性。 |
任意文字 |
價格 - 加上刪除線的價格 | 選用 | 活動票券/票證的原始價格。 | 任意文字 |
價格摘要 | 選用 | 顯示促銷、活動或會員折扣的價格摘要 (如有)。 | 任意文字 建議文字長度:最多 45 個半形字元 (文字過長) 可能會顯示刪節號) |
評分 - 最高值 | 選用 | 分級量表的最高值。 如果同時提供目前的評分值,則必須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 目前的值 | 選用 | 目前分級量表的值。 如果同時提供最高評分值,則須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 計算 | 選用 | 事件的評分次數。 注意:如果您的應用程式需要 管理向使用者顯示的方式提供簡明扼要 向使用者顯示的字串。舉例來說,如果計數為 1,000,000,請考慮使用 100 萬等縮寫,但是不會 但在螢幕較小的情況下無法完整顯示 |
字串 |
評分 - 計數值 | 選用 | 事件的評分次數。 注意:如果不想處理相關問題,請提供這個欄位 顯示縮寫邏輯如果同時包含次數和計數值 搜尋時,我們會使用「計數」向使用者顯示 |
長 |
內容類別 | 選用 | 說明實體中的內容類別, | 符合資格的列舉清單
請參閱「內容類別」一節 。 |
LodgingReservationEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 任意文字。例如「12 月 12 日入住」 建議文字長度:最多 50 個半形字元 |
入住時間 | 必要 | 代表回報時間的 Epoch 時間戳記 (以毫秒為單位) 預訂流量 | 以毫秒為單位的 Epoch 紀元時間戳記 |
退房時間 | 必要 | 代表退房時間的 Epoch 時間戳記 (以毫秒為單位) 預訂流量 | 以毫秒為單位的 Epoch 紀元時間戳記 |
地點 - 國家/地區 | 必要 | 住宿地點的所在國家/地區。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 城市 | 必要 | 住宿所在的城市, | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 顯示地址 | 必要 | 要向使用者顯示的住宿地址。 | 任意文字 建議文字長度:最多 20 個半形字元 |
地點 - 街道地址 | 選用 | 飯店的街道地址 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 州/省 | 選用 | 住宿地點所在的州或省 (如適用) 定位。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 郵遞區號 | 選用 | 住宿地點的郵遞區號 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
位置 - 社區 | 選用 | 住宿地點 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
代表圖片 | 選用 |
如果您提供多張圖片,我們只會顯示 1 張圖片。推薦方案 顯示比例為 16:9 注意:如有提供識別證,請務必確認 圖片頂端和底部皆為 24 dp |
如需相關指南,請參閱「圖片規格」一節。 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
預留項目 ID | 選用 | 住宿預訂的預訂 ID。 | 任意文字 |
評分 - 最高值 | 選用 | 分級量表的最高值。 如果同時提供目前的評分值,則必須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 目前的值 | 選用 | 目前分級量表的值。 如果同時提供最高評分值,則須提供這項屬性。 |
大於或等於 0.0 的數字 |
評分 - 計算 | 選用 | 住宿飯店的評分次數。 注意:如果您的應用程式需要 管理向使用者顯示的方式提供簡明扼要 向使用者顯示的字串。舉例來說,如果計數為 1,000,000,請考慮使用 100 萬等縮寫,但是不會 但在螢幕較小的情況下無法完整顯示 |
字串 |
評分 - 計數值 | 選用 | 住宿飯店的評分次數。 注意:如果不想處理相關問題,請提供這個欄位 顯示縮寫邏輯如果同時包含次數和計數值 搜尋時,我們會使用「計數」向使用者顯示 |
長 |
價格 - 目前價格 | 在特定情況下為必要 | 住宿目前的價格。 如果提供了附帶刪除線的價格,則必須提供這項屬性。 |
任意文字 |
價格 - 加上刪除線的價格 | 選用 | 住宿優惠的原始價格,在 第一種是使用無代碼解決方案 AutoML 透過使用者介面建立機器學習模型 | 任意文字 |
價格摘要 | 選用 | 顯示促銷、活動或會員折扣的價格摘要 (如有)。 | 任意文字 建議文字長度:最多 45 個半形字元 (文字過長) 可能會顯示刪節號) |
TransportationReservationEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 任意文字。例如「SFO 到 SAN」 建議文字長度:最多 50 個半形字元 |
運輸類型 | 必要 | 預訂行程的交通方式/類型。 | 例如:Flight、TRAIN、BUS 或 FERRY |
出發時間 | 必要 | 以毫秒為單位的 Epoch 時間戳記,用來表示出發時間。 | 以毫秒為單位的 Epoch 紀元時間戳記 |
抵達時間 | 必要 | 代表抵達時間的 Epoch 時間戳記,以毫秒為單位。 | 以毫秒為單位的 Epoch 紀元時間戳記 |
出發地點 - 國家/地區 | 選用 | 出發國家/地區。 | 任意文字 建議文字長度:最多 20 個半形字元 |
出發地點 - 城市 | 選用 | 出發城市。 | 任意文字 建議文字長度:最多 20 個半形字元 |
出發地點 - 顯示地址 | 選用 | 要向使用者顯示的出發地點。 | 任意文字 建議文字長度:最多 20 個半形字元 |
出發地點 - 街道地址 | 選用 | 出發地點的街道地址 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
出發地點 - 州/省 | 選用 | 出發地點的州或省 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
出發地點 - 郵遞區號 | 選用 | 出發地點的郵遞區號 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
出發地點 - 社區 | 選用 | 出發地點的鄰裡 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
抵達地點 - 國家/地區 | 選用 | 抵達國家/地區。 | 任意文字 建議文字長度:最多 20 個半形字元 |
抵達地點 - 城市 | 選用 | 抵達的城市。 | 任意文字 建議文字長度:最多 20 個半形字元 |
抵達地點 - 顯示地址 | 選用 | 要向使用者顯示的抵達地點。 | 任意文字 建議文字長度:最多 20 個半形字元 |
抵達地點 - 街道地址 | 選用 | 抵達地點的街道地址 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
抵達地點 - 州/省 | 選用 | 抵達地點的州或省 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
抵達地點 - 郵遞區號 | 選用 | 抵達地點的郵遞區號 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
抵達地點 - 社區 | 選用 | 抵達地點的鄰裡 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
服務供應商 - 名稱 | 選用 |
服務供應商的名稱。 注意:服務必須提供文字或圖片 。 |
任意文字。例如:航空公司名稱 |
服務供應商 - 圖片 | 選用 |
服務供應商的標誌/圖片。 注意:服務必須提供文字或圖片 。 |
如需相關指南,請參閱「圖片規格」一節。 |
代表圖片 | 選用 |
如果您提供多張圖片,我們只會顯示 1 張圖片。推薦方案 顯示比例為 16:9 |
如需相關指南,請參閱「圖片規格」一節。 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
預留項目 ID | 選用 | 交通工具預訂項目的預訂 ID。 | 任意文字 |
價格 - 目前價格 | 在特定情況下為必要 | 預留項目目前的價格。 如果提供了附帶刪除線的價格,則必須提供這項屬性。 |
任意文字 |
價格 - 加上刪除線的價格 | 選用 | 預訂的原始價格,在 第一種是使用無代碼解決方案 AutoML 透過使用者介面建立機器學習模型 | 任意文字 |
價格摘要 | 選用 | 顯示促銷、活動或會員折扣的價格摘要 (如有)。 | 任意文字 建議文字長度:最多 45 個半形字元 (文字過長) 可能會顯示刪節號) |
交通運輸號碼 | 必填 | 航班號碼、公車號碼、火車號碼或渡輪/郵輪號碼。 | 任意文字 |
登機時間 | 必填 | 代表預留項目登機時間的 Epoch 時間戳記 (如適用) | 以毫秒為單位的 Epoch 紀元時間戳記 |
VehicleRentalReservationEntity
屬性 | 必要性 | 說明 | 格式 |
---|---|---|---|
動作 URI | 必要 |
服務供應商應用程式中實體的深層連結。 注意:您可以使用深層連結追蹤歸因。 請參閱這篇常見問題 |
URI |
標題 | 必要 | 實體的名稱。 | 任意文字。例如:「臺北市信義區」 建議文字長度:最多 50 個半形字元 |
取貨時間 | 必要 | 代表預留項目取貨時間的 Epoch 時間戳記。 | 以毫秒為單位的 Epoch 紀元時間戳記 |
回程時間 | 選用 | 代表預訂退房時間的 Epoch 時間戳記。 | 以毫秒為單位的 Epoch 紀元時間戳記 |
取貨地址 - 國家/地區 | 選用 | 上車地點所在的國家/地區。 | 任意文字 建議文字長度:最多 20 個半形字元 |
取件地址 - 城市 | 選用 | 上車地點的城市。 | 任意文字 建議文字長度:最多 20 個半形字元 |
取貨地址 - 顯示地址 | 選用 | 要向使用者顯示的上車地點。 | 任意文字 建議文字長度:最多 20 個半形字元 |
取貨地址 - 街道地址 | 選用 | 取貨地點的街道地址 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
取貨地址 - 州/省 | 選用 | 上車地點的州或省 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
取貨地址 - 郵遞區號 | 選用 | 取貨地點的郵遞區號 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
取貨地址 - 社區 | 選用 | 上車地點的鄰裡 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
退貨地址 - 國家/地區 | 選用 | 退貨地點的國家/地區。 | 任意文字 建議文字長度:最多 20 個半形字元 |
退貨地址 - 城市 | 選用 | 退貨地點的城市。 | 任意文字 建議文字長度:最多 20 個半形字元 |
退貨地址 - 顯示地址 | 選用 | 向使用者顯示的返回地點。 | 任意文字 建議文字長度:最多 20 個半形字元 |
退貨地址 - 街道地址 | 選用 | 退貨地點的街道地址 (如有)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
退貨地址 - 州/省 | 選用 | 退貨地點的州或省 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
退貨地址 - 郵遞區號 | 選用 | 退貨地點的郵遞區號 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
退貨地址 - 社區 | 選用 | 退貨地點的鄰裡 (如適用)。 | 任意文字 建議文字長度:最多 20 個半形字元 |
服務供應商 - 名稱 | 選用 |
服務供應商的名稱。 注意:服務必須提供文字或圖片 。 |
任意文字。例如「Avis 租車」 |
服務供應商 - 圖片 | 選用 |
服務供應商的標誌/圖片。 注意:服務必須提供文字或圖片 。 |
如需相關指南,請參閱「圖片規格」一節。 |
代表圖片 | 選用 |
如果您提供多張圖片,我們只會顯示 1 張圖片。推薦方案 顯示比例為 16:9 |
如需相關指南,請參閱「圖片規格」一節。 |
說明 | 選用 | 用來描述實體的單一文字段落。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 建議文字長度:180 個半形字元 |
字幕清單 | 選用 | 最多 3 則字幕,每行文字各一行。 注意:說明和字幕清單將會顯示 只會向使用者顯示 |
任意文字 每個字幕的建議文字大小:上限 50 個半形字元 |
確認 ID | 選用 | 租車預訂的確認 ID。 | 任意文字 |
價格 - 目前價格 | 在特定情況下為必要 | 預留項目目前的價格。 如果提供了附帶刪除線的價格,則必須提供這項屬性。 |
任意文字 |
價格 - 加上刪除線的價格 | 選用 | 預訂的原始價格,在 第一種是使用無代碼解決方案 AutoML 透過使用者介面建立機器學習模型 | 任意文字 |
價格摘要 | 選用 | 顯示促銷、活動或會員折扣的價格摘要 (如有)。 | 任意文字 建議文字長度:最多 45 個半形字元 (文字過長) 可能會顯示刪節號) |
圖片規格
下表列出圖片素材資源的規格規定:
顯示比例 | 最低像素 | 建議的像素 |
---|---|---|
正方形 (1x1) 建議採用 |
300x300 | 1200x1200 |
橫向 (1.91x1) | 600x314 | 1200x628 |
直向 (4x5) | 480x600 | 960x1200 |
圖片必須在公開 CDN 上代管,以便 Google 存取。
檔案格式
PNG、JPG、靜態 GIF、WebP
檔案大小上限
5120 KB
其他建議
- 圖片安全區域:將重要內容放在圖片中央 80% 的範圍內。
- 使用透明背景,讓圖片正確顯示在深色和淺色主題設定中。
內容類別
內容類別可讓應用程式發布屬於 類別這會將內容對應至部分預先定義的類別:
TYPE_EDUCATION
TYPE_SPORTS
TYPE_MOVIES_AND_TV_SHOWS
TYPE_BOOKS
TYPE_AUDIOBOOKS
TYPE_MUSIC
TYPE_DIGITAL_GAMES
TYPE_TRAVEL_AND_LOCAL
TYPE_HOME_AND_AUTO
TYPE_BUSINESS
TYPE_NEWS
TYPE_FOOD_AND_DRINK
TYPE_SHOPPING
TYPE_HEALTH_AND_FITENESS
TYPE_MEDICAL
TYPE_PARENTING
TYPE_DATING
圖片必須在公開 CDN 上代管,以便 Google 存取。
內容類別使用規範
- ArticleEntity 和 GenericGenericEntity 等實體是 有資格使用任一內容類別。如為其他實體, 僅限 EventEntity、EventReservationEntity、PointOfInterestEntity 只有部分類別符合資格。查看類別清單 才符合某個實體類型的條件,再填入清單。
針對某些內容類別加以組合使用特定實體類型 分別是一般實體和 ContentCategory:
- TYPE_MovieS_AND_TV_SHOWS - 查看來自以下實體的實體: 使用前請先手錶整合指南,再使用 一般實體
- TYPE_BOOKS - 查看 EbookEntity,再使用 一般實體
- TYPE_AUDIOBOOKS - 結帳 AudiobookEntity 之前 使用一般實體
- TYPE_SHOPPING - 結帳 ShoppingEntity 之前 使用一般實體
- TYPE_FOOD_AND_DRINK - 查看下列實體的實體: 使用 Food Integration 指南後,再使用 一般實體
[ContentCategory] 欄位為選填欄位,如果 不屬於前述任何類別。
如果提供了多項內容類別,請依序提供 與置入性最相關的內容類別之內容的關聯性 首先
步驟 2:提供叢集資料
建議您在背景執行內容發布工作 (例如使用 WorkManager),並安排定期執行或根據事件排程 (例如使用者每次開啟應用程式,或剛將商品加入購物車時)。
AppEngagePublishClient
負責發布叢集。
以下 API 可用於在用戶端發布叢集:
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
deleteUserManagementCluster
deleteClusters
isServiceAvailable
這個 API 可用於檢查服務是否可供整合,以及內容是否能在裝置上顯示。
Kotlin
client.isServiceAvailable.addOnCompleteListener { task -> if (task.isSuccessful) { // Handle IPC call success if(task.result) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } }
Java
client.isServiceAvailable().addOnCompleteListener(task - > { if (task.isSuccessful()) { // Handle success if(task.getResult()) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } });
publishRecommendationClusters
這個 API 可用於發布 RecommendationCluster
物件清單。
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build() ) .build() )
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build()) .build());
服務收到要求後,系統會在單一交易中執行以下動作:
- 移除開發合作夥伴提供的現有
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());
服務收到要求後,系統會在單一交易中執行以下動作:
- 移除開發合作夥伴提供的現有
FeaturedCluster
資料。 - 剖析要求所提供的資料並儲存在更新後的精選叢集中。
如果發生錯誤,整個要求都會遭到拒絕,現有狀態則維持不變。
publishContinuationCluster
這個 API 可用來發布 ContinuationCluster
物件。
Kotlin
client.publishContinuationCluster( PublishContinuationClusterRequest.Builder() .setContinuationCluster( ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
Java
client.publishContinuationCluster( new PublishContinuationClusterRequest.Builder() .setContinuationCluster( new ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
服務收到要求後,系統會在單一交易中執行以下動作:
- 移除開發合作夥伴提供的現有
ContinuationCluster
資料。 - 剖析要求所提供的資料並儲存在更新後的接續叢集中。
如果發生錯誤,整個要求都會遭到拒絕,現有狀態則維持不變。
publishUserAccountManagementRequest
這個 API 是用來發布「登入」資訊卡。登入動作會將使用者導向應用程式的登入頁面,方便應用程式發布內容 (或提供更個人化的內容)
登入資訊卡包含下列中繼資料:
屬性 | 必要性 | 說明 |
---|---|---|
動作 URI | 必要 | 導向動作的深層連結,也就是前往應用程式登入頁面 |
圖片 | 選用 - 如未提供,則必須提供標題 |
資訊卡上顯示的圖片 解析度 1264x712、顯示比例 16x9 的圖片 |
標題 | 選用 - 如未提供,則必須提供圖片 | 資訊卡上的標題 |
動作文字 | 選用 | 行動號召中顯示的文字,也就是「登入」 |
副標題 | 選用 | 資訊卡上的選用副標題 |
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());
服務收到要求後,系統會在單一交易中執行以下動作:
- 移除開發合作夥伴提供的現有
UserAccountManagementCluster
資料。 - 剖析要求所提供的資料並儲存在更新後的 UserAccountManagementCluster 叢集中。
如果發生錯誤,整個要求都會遭到拒絕,現有狀態則維持不變。
updatePublishStatus
如基於內部業務原因,未發布任何叢集 強烈建議使用 updatePublishStatus API。這麼做很重要,因為:
- 在所有情況下,提供狀態都至關重要,即使內容已發布 (STATUS == PUBLISHED) 也一樣。如此一來,才能為資訊主頁填入資料,並以明確的狀態表示整合項目的健康度和其他指標。
- 如未發布內容,但整合狀態未遭中斷 (STATUS == NOT_PUBLISHED),Google 便可避免在應用程式健康資訊主頁中觸發快訊。這可從提供者的角度確認內容是因預期的情況而未發布。
- 這有助開發人員深入瞭解資料何時發布和發布 而不是
- 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 建議您發布登入資訊卡如果供應商因故無法 發布登入資訊卡,建議您呼叫 含有狀態碼的 updatePublishStatus API NOT_PUBLISHED_REQUIRES_SIGN_IN
Kotlin
client.updatePublishStatus( PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build())
Java
client.updatePublishStatus( new PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build());
deleteRecommendationClusters
這個 API 可用來刪除推薦叢集的內容。
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
服務收到要求後,會從推薦叢集中移除現有資料。如果發生錯誤,整個要求都會遭到拒絕, 現有狀態維持不變
deleteFeaturedCluster
這個 API 可用來刪除精選叢集的內容。
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
服務收到要求後,會從精選叢集中移除現有資料。如果發生錯誤,整個要求都會遭到拒絕,現有狀態則維持不變。
deleteContinuationCluster
這個 API 可用來刪除接續叢集的內容。
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
服務收到要求後,會從接續叢集中移除現有資料。如果發生錯誤,整個要求都會遭到拒絕, 現有狀態維持不變
deleteUserManagementCluster
這個 API 可用來刪除 UserAccountManagement 叢集的內容。
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
服務收到要求後,會從 UserAccountManagement 叢集中移除現有資料。如果發生錯誤,整個要求都會遭到拒絕,現有狀態則維持不變。
deleteClusters
這個 API 可用於刪除指定叢集類型的內容。
Kotlin
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .build())
Java
client.deleteClusters( new DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .build());
服務收到要求後,會從符合指定叢集類型的所有叢集中移除現有資料。用戶端可以選擇傳遞一或多個叢集類型。如果發生錯誤,整個要求都會遭到拒絕,現有狀態則維持不變。
處理錯誤
強烈建議您監聽來自發布 API 的工作結果,據以採取後續動作來復原及重新提交能順利執行的工作。
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(..) .build()) .addOnCompleteListener { task -> if (task.isSuccessful) { // do something } else { val exception = task.exception if (exception is AppEngageException) { @AppEngageErrorCode val errorCode = exception.errorCode if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } }
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(...) .build()) .addOnCompleteListener( task -> { if (task.isSuccessful()) { // do something } else { Exception exception = task.getException(); if (exception instanceof AppEngageException) { @AppEngageErrorCode int errorCode = ((AppEngageException) exception).getErrorCode(); if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } });
發生錯誤時會傳回 AppEngageException
,並提供原因的錯誤代碼。
錯誤代碼 | 附註 |
---|---|
SERVICE_NOT_FOUND |
這項服務不適用於指定裝置。 |
SERVICE_NOT_AVAILABLE |
這項服務適用於指定裝置,但無法於呼叫期間使用 (例如服務已明確停用)。 |
SERVICE_CALL_EXECUTION_FAILURE |
執行緒發生問題,因此工作執行失敗。在這種情況下,您可以重試。 |
SERVICE_CALL_PERMISSION_DENIED |
呼叫端未獲准發出服務呼叫。 |
SERVICE_CALL_INVALID_ARGUMENT |
要求包含無效的資料 (例如,超過允許的叢集數量上限)。 |
SERVICE_CALL_INTERNAL |
服務端發生錯誤。 |
SERVICE_CALL_RESOURCE_EXHAUSTED |
服務呼叫過於頻繁。 |
步驟 3:處理廣播意圖
除了透過工作發出發布內容 API 呼叫,您還需要設定 BroadcastReceiver
來接收內容發布要求。
廣播意圖的目標主要用於應用程式重新啟動及強制同步處理資料。廣播意圖的傳送頻率通常不高。觸發廣播意圖的唯一時機,就是 Engage Service 判定內容可能過時 (例如已滿一週)。這樣一來,即使應用程式已有長時間未執行,使用者也能獲得最新的內容體驗。
BroadcastReceiver
必須透過下列兩種方式進行設定:
- 使用
Context.registerReceiver()
以動態方式註冊BroadcastReceiver
類別的例項。這樣就能接收仍在記憶體中的應用程式訊息。
Kotlin
class AppEngageBroadcastReceiver : BroadcastReceiver(){ // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is // received } fun registerBroadcastReceivers(context: Context){ var context = context context = context.applicationContext // Register Recommendation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_FEATURED)) // Register Continuation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION)) }
Java
class AppEngageBroadcastReceiver extends BroadcastReceiver { // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is // received } public static void registerBroadcastReceivers(Context context) { context = context.getApplicationContext(); // Register Recommendation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continuation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION)); }
- 在
AndroidManifest.xml
檔案中使用<receiver>
標記,以靜態方式宣告實作項目。這樣應用程式就能在未執行的狀態下接收廣播意圖,也能發布內容。
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
</intent-filter>
</receiver>
</application>
服務會傳送下列意圖:
com.google.android.engage.action.PUBLISH_RECOMMENDATION
(建議選項) 在收到此意圖時啟動publishRecommendationClusters
呼叫。com.google.android.engage.action.PUBLISH_FEATURED
建議 在收到此意圖時啟動publishFeaturedCluster
呼叫。com.google.android.engage.action.PUBLISH_CONTINUATION
建議 在收到此意圖時啟動publishContinuationCluster
呼叫。
整合工作流程
如需整合完成後驗證作業的逐步指南,請參閱「Engage 開發人員整合工作流程」一文。
常見問題
請參閱「Engage SDK 常見問題」。
聯絡資訊
聯絡 engage-developers@google.com 都會遇到任何問題
後續步驟
完成這項整合後,後續步驟如下:
- 傳送電子郵件給 engage-developers@google.com 和 上傳完成供 Google 測試的整合式 APK。
- Google 會在內部執行驗證及審查,確認整合項目能夠正常運作。如果需要進行變更,Google 會與您聯絡並提供所有必要詳細資料。
- 測試完成後,Google 會與您聯絡 通知您,您可以將完成整合的更新版 APK 發布至 Play 商店。
- Google 確認您已將更新版 APK 發布至 Play 商店後,就會發布您的推薦、精選和接續叢集供使用者瀏覽。