- 原文地址:5 tips for using showInstallPrompt in your instant experience
- 原文做者:Miguel Montemayor
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:Fxymine4ever
- 校對者:jacksonke
Google Play Instant 容許用戶在安裝前就能夠試用你的應用或者遊戲。不管是否從 Play Store 仍是網址發佈,Instant 均可以讓你的用戶直接擁有原生應用的體驗。html
你的 Instant 體驗其中一個目標多是利用你的應用程序的 Instant 體驗來促進安裝。經過保證正確使用最近的 API 和最佳的實踐,你能夠更輕鬆地實現這個目標。java
當用戶決定去安裝你的應用程序或遊戲時,showInstallPrompt API 容許你在 Instant 體驗中提示用戶是否進行安裝。在調用這個 API 後,一個應用內提示會出如今你的應用程序中。一旦用戶贊成去安裝,該應用的安裝程序會開始安裝。當安裝完成時,剛纔安裝的應用程序會自動啓動。android
在你的 Instant 體驗中使用 showInstallPrompt 時,下面詳細介紹了最佳的實踐,這可讓你的用戶絲滑地從 Instant 過渡到已安裝的 App。git
2018年6月更新後的 showInstallPrompt API 與舊的 API 相比,前者有幾個關鍵的優勢。新的 API 能夠顯示一個更小的安裝提示,同時也能夠經過添加額外的 postInstallIntent 參數,來優化從 Instant 到已安裝 App 的過渡,這個參數能夠指定安裝後啓動的 Activity。github
在你的 Instant 體驗中確認 showInstallPrompt 的版本。api
之前,舊版本的 API 會啓動一個更大的應用內安裝提示。因爲舊版 showInstallPrompt 已經棄用,如今調用這個 API 會啓動你的 Play Store 列表。爲了恢復應用內安裝提示,你須要遷移到新的 API。數組
若是你不肯定你的 Instant 體驗是否調用這個舊的 API,你能夠經過運行你的 Instant App 而且選取安裝按鈕來快速確認。若是你跳轉到了 Play Store 列表,這說明你正在使用舊的 API。若是你看見一個應用內的覆蓋,這說明你正在使用最新的 API。bash
此外,你還能夠檢查你的代碼是否調用了包含 postInstallIntent 參數的 API。若是沒有包含 postInstallIntent,這說明你正在使用舊的 API。下面是新的 showInstallPrompt API 的方法簽名:cookie
public static boolean showInstallPrompt (Activity activity, Intent postInstallIntent, int requestCode, String referrer)
複製代碼
postInstallIntent
是在應用安裝以後觸發的 Intent。這個 Intent 必須是能被解析爲已安裝應用中的 Activity,不然它將無效。app
遷移到新版的 showInstallPrompt
遷移到新版的 showInstallPrompt API,應該遵循下面幾個步驟:
一、確保你的項目中使用的是最新版的 Instant App 客戶端的庫。在你的 build.gradle 中更新以下的依賴:
implementation 'com.google.android.gms:play-services-instantapps:16.0.1'
複製代碼
二、更新你的代碼,將舊版 API 轉換爲帶有 postInstallIntent 參數的新版 showInstallPrompt API。
三、上傳你的 Instant App 到 內部跟蹤測試,以驗證安裝按鈕如今是否啓動了一個應用內安裝覆蓋提示。
你一樣能夠查看這個使用了新版 showInstallPrompt API 的 示例應用程序,以瞭解它是怎麼工做的。
showInstallPrompt API 不只僅是爲了安裝!若是你的 Instant 遊戲支持 預註冊,你可使用相同的 API 提示進行預註冊。
當你的應用調用 showInstallPrompt 時,預註冊的行爲和安裝期間的行爲類似。應用內的覆蓋區域也會出現預註冊的用戶。用戶以後能夠繼續從 Instant 遊戲裏的進度玩起。此外,預註冊的用戶將在遊戲發佈的時候收到通知。
要啓動預註冊的流程,你能夠調用 showInstallPrompt API,就像以前的提示安裝同樣。
// 提示預註冊
InstantApps.showInstallPrompt(activity, postInstallIntent, requestId, referrerId)
複製代碼
注意, postInstallIntent
參數在預註冊完成以後將被忽視。
將用戶的狀態從 Instant 體驗轉變到已安裝的應用程序。用戶應該能選擇是否從以前 Instant 體驗裏中斷的地方開始。任何在 Instant 體驗中取得的成就或者進度都應該延續到已安裝的應用或遊戲中。
保護用戶數據,咱們推薦你使用 Cookie API 在安裝以後遷移試玩的數據。Cookie API 會容許你在設備上存儲一小部分信息的 token,這個 token 能被你的可安裝的應用程序訪問。這個 API 會確保只有當應用程序的 Package ID 與你的 Instant App 相同時,才能訪問該 Cookie。
在你的 Instant App 中,你應該一直使用 PackageManagerCompat 存儲 Cookie 數據。
// Cookie 數據是一個簡單的 byte 數組。
val cookieData: ByteArray = byteArrayOf()
// 使用 PackageManagerCompat 去訪問 Cookie API。
val packageManager = InstantApps.getPackageManagerCompat(applicationContext)
// 在設置值以前,確保cookie數據能夠適合存儲。
if (cookieData.length <= packageManager.getInstantAppCookieMaxSize()) {
packageManager.setInstantAppCookie(cookieData)
}
複製代碼
在用戶安裝了這個應用程序以後,你能夠訪問這個數據。
// 使用 PackageManagerCompat 去訪問 Cookie API。
val packageManager = InstantApps.getPackageManagerCompat(this)
val cookieData = packageManager.getInstantAppCookie()
// 在讀取了這個 Cookie 數據以後清除它
packageManager.setInstantAppCookie(null)
複製代碼
在打開 Instant 體驗時,在完成他們想要完成的任務時,用戶不該該被中斷。當用戶在部分完成他們的任務的時候,避免安裝你的應用程序。
若是用戶已經完成他們的任務以後,或者想要去使用一個在你的 Instant App 中沒法使用的額外的功能時,你能夠調用 showInstallPrompt API。
例如,若是你想經過在線產品廣告來引導用戶得到 Instant 體驗,你的 Instant App 應該容許你的用戶完成結帳流程。在購買完成以後,你能夠提示安裝。避免要求用戶在購買完成以前進行安裝或者註冊。
雖然最後一個提示的意思很容易理解,可是請確保你的 Instant 體驗有一個明確的安裝提示。若是沒有這些提示,用戶可能會疑惑怎樣去安裝你的應用,或者可能不得不跳轉到 Play Store 去安裝。
安裝按鈕應該調用 showInstallPrompt 去觸發安裝提示。
使用 Material Design 「獲取」 圖標,同時在安裝按鈕