淺談 Google App Indexing

Standard

App Indexing (圖片取自 App Indexing – Google Developers)

前言

上一篇 談到 Facebook 推出的 App Links 標準,為 Apps 之間的連結跳轉帶來解決方案,而 2015 的 Google I/O 大會推出的 Android M,其中一個亮點就是推出它們對於跨 Apps 跳轉的解決方案 — 也叫 App Links — 但它是透過 json 檔設定實現,這邊就不多做介紹了,有興趣可看 HOKO 的這篇介紹

而這篇要介紹的是關於 Google 的 App Indexing ,在這個行動裝置當道的時代,App Indexing 的出現便是為了讓 Google Search 亦能搜尋到 App 中的內容,甚至點擊搜尋結果就直接讓使用者透過 Deep Link 連到 App 內的特定頁面。

還是有些抽象?那麼先來看看 Google Developers 釋出的這支影片,有趣地介紹了實際應用的情境。

App Indexing 的使用情境

沒空看影片也沒關係,我這邊再說個假設的情境吧。

假設今天我做了個美食評鑑網站跟 App – 小P 美食(我又亂取了XD),並且設好了 App Indexing。某天使用者走在路上,拿起 Android 手機透過 Google 搜尋「咖哩飯 台北」,而搜尋結果裡正好有 小P 美食 關於咖哩飯餐廳的頁面,使用者很久以前也裝過 小P 美食 App,那麼在點擊搜尋結果時,就能夠「直接」無縫地把使用者帶到 小P 美食 App 中的那個咖哩飯頁面。

為什麼說「直接」呢?因為就算不做 App Indexing,Android App 依然可以註冊攔截符合某個 pattern 的網址,將使用者帶到 App 內。不過請注意,這邊通常是會再跳一個「詢問框」(如下圖)的,詢問使用者要選擇用哪個 App 開啟,而 App Indexing 的搜尋結果連結則不會,會「直接」打開 App。

詢問框 – 以 Google Plus 為例

而要是使用者沒裝 小P 美食的 App,搜尋結果頁面也會因為頁面內容與 App 產生 App Indexing,將把 App 的下載按鈕放在「更多應用程式內容」的區塊中。

實際的應用就像這樣,這是國外房地產 App 的應用:

試著用 Android 手機搜尋「2492 gerald way」,而我之前有安裝 Trulia 的 Android App,所以點擊 Trulia.com 的搜尋結果時就會「直接」帶我到 App 中了。點其他網站的呢?雖然他們有 App(這些其他的 App 下載按鈕會被呈現在「更多應用程式內容」這個區塊中),但我沒安裝,那點連結只會帶我到網站而已。

是個 fallback 的概念,使用者有裝 App,就能享受更佳的體驗(速度、操作,甚至是因此促成更多的購物轉換率),但沒裝也不會強迫使用者安裝,而是 fallback 回行動版網站。

實作

首先,你必須要同時有網站跟 Android App,因為 App Indexing 必須在「線上內容」與「App」兩者的內容是一致(例如內容來自同一支 API)的前提下,Google 方能使其生效。

Android 端與 Web 端需搭配實作,最後再進行產生關連的設定。

Android 端

先講 Android 部分,不過我不是 Android 工程師,所以點到為止,詳情請參考 Google Developers 官方文件 的步驟吧。

  1. 先定義好需要的 Deep Links,例如需要連到商品頁面的連結。

    例如 http://shop.patw.me/product/123/,而 123 是商品 ID。

  2. 在 Android App 中加入 Intent Filter。

    當安裝好某個 App,就相當於註冊了在 Android manifest 檔案中的 intent filters。

    AndroidManifest.xml 加入定義區塊,即可定義需要攔截的網址的規則,例如 schemehttphost 符合 shop.patw.me,而且 path/product 開頭,後面的參數則是商品 ID。

  3. 加入處理 Intent Filter 的程式碼。

    實作 – 攔截到符合網址規則的網址,接下來在 App 中要導向到哪。

Web 端

  1. 在目標網頁(例如商品頁)中 <head></head> 區塊加入 <link /> 標籤,定義相應的 deep link。(也可定義在 XML sitemap 或是 Schema.org 標記中)

    <link rel="alternate" href="android-app://{APP-PACKAGE-NAME}/{Protocol}/{商品頁路徑}" />
    
  2. 嗯,沒有第二步,網站端就這樣。

產生關連的設定

若未設定產生 App 跟網站的關連,那麼就僅是讓 Android 系統會攔截符合網址 pattern 的連結,跳出詢問框提示使用者是否要用該 App 開啟而已。而 App Indexing 則一定得設置好關連,並靜待生效。

請按照 將應用程式編入 Google 搜尋索引 的步驟設定,將 App 與網站產生關連。

設定完成後,就可以透過 Google 的 Search Console(過去的 Webmaster tools)看到網站及 Android 應用程式的狀況。

Search Console

除錯

若一直無法生效,請善用 Search Console(過去的 Google Webmaster Tools)中的「檢索 > 檢索錯誤 > Android 應用程式」資訊,取得 App Indexing 中遇到的錯誤。

例如實作過程中曾經遇過 Android App 那邊的內容資料是取自某支 API,但該 API 阻擋了 Google 爬蟲,導致不斷出現「內容不相符」的錯誤,所以一直無法產生 App Indexing。

另外還有「不支援調用請求 URI」、「違反內容存取規定」、「違反返回按鈕規定」等錯誤類型,詳情請見 官方文件 的說明。

若要測試 <link /> 標籤中設定的連結是否能正常運作,可透過 Deep link testing tool,用 Android 手機掃描 QRCode 實際測試看看吧。

Deep link testing tool

也可透過 Search Console 中的 Google 模擬器,試著訪問 Deep Link 看是否能如預期地運作。

Google 模擬器

錯誤修正後,得讓 Googlebot 來重新存取網頁跟 App,這仍需要一段時間(可能幾天)才能生效,所以要實作 App Indexing 必須把這些嘗試時間預估進去(目前我也還在等待 :P)。

行動版網站的定位

有 App Indexing 了,那行動版網站是否就放生、隨便做就好?當然不是!不然前端工程師如我就沒飯吃了

那些沒安裝 Android App 的、其他平台的使用者,還是會瀏覽行動版網站,請一樣盡可能地提供 最佳的體驗 給這些使用者。

當然,因為 App Indexing 的實作,會把那些有安裝 Android App 的使用者給帶到 App 中,導致行動版網站的流量下降,不過這就是個權衡吧,若能在 App 中創造更佳的體驗,或是帶來更多的購買行為,那也許就是值得的交換。

iOS 呢?

目前還不保證能生效,詳情請見 官方文件 的說明。

其他案例參考

Google 官方提供的參考連結:

參考資料

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *