[英]PWA with TWA: How to force Chrome instead of default browser
我已經按照此處的官方 Google 指南使用 TWA 構建了 PWA 並生成了 APK - https://developers.google.com/web/updates/2019/02/using-twa
發生的情況是,當除 Chrome 之外的其他瀏覽器設置為默認瀏覽器時,行為是不可預測的。 例如:在默認 MI 瀏覽器的小米手機上,我的應用程序作為快捷方式工作,頁面僅加載到瀏覽器的一個選項卡中。 這款手機安裝了 Chrome,但我的應用程序仍然使用默認瀏覽器來呈現我的 PWA。
官方文檔說明如下:
今天,如果用戶版本的 Chrome 不支持受信任的 Web 活動,Chrome 將退回到使用自定義選項卡的簡單工具欄。 其他瀏覽器也可以實現可信 Web 活動使用的相同協議。 雖然主機應用程序對打開的瀏覽器有最終決定權,但我們建議使用與自定義選項卡相同的策略:使用用戶的默認瀏覽器,只要該瀏覽器提供所需的功能。
雖然指南有這一段,但我找不到任何關於如何為我的 PWA 設置首選瀏覽器的文檔
要在 Chrome 中打開 URL,我使用來自androidx.browser.browser:1.0.0
Chrome 自定義標簽首先我檢查是否支持 Chrome 自定義標簽
const val SERVICE_ACTION = "android.support.customtabs.action.CustomTabsService"
const val CHROME_PACKAGE = "com.android.chrome"
private fun Context.isChromeCustomTabsSupported(): Boolean {
val serviceIntent = Intent(SERVICE_ACTION)
serviceIntent.setPackage(CHROME_PACKAGE)
val resolveInfos = packageManager.queryIntentServices(serviceIntent, 0)
return !(resolveInfos == null || resolveInfos.isEmpty())
}
然后在自定義選項卡中打開 URL
if (isChromeCustomTabsSupported()) {
CustomTabsIntent.Builder().apply {
setToolbarColor(ContextCompat.getColor(this@MainActivity, R.color.colorPrimary))
setSecondaryToolbarColor(ContextCompat.getColor(this@MainActivity, R.color.colorPrimaryDark))
}.build().launchUrl(this@MainActivity, Uri.parse(URL))
}
如果Kotlin
的答案不好,我會用 Java 重寫
不建議強制使用 Chrome 作為瀏覽器來處理 Trusted Web Activity ,因為支持 Trusted Web Activity 的瀏覽器數量正在增長,開發人員應盡量尊重用戶的瀏覽器選擇。
在android-browser-helper中選擇瀏覽器的實現將:
或者,開發人員可以選擇用WebView 回退實現替換數字 2 和 3,即使在支持的功能集上存在折衷。
關於以下內容:
在默認 MI 瀏覽器的小米手機上,我的應用程序就像一個快捷方式,頁面只是在瀏覽器的一個選項卡中加載。 這款手機安裝了 Chrome,但我的應用程序仍然使用默認瀏覽器來呈現我的 PWA。
這里可能會發生一些事情:
對於 1,解決方案是更新 Chrome,一切正常。 否則,啟用 WebView 回退。
對於 2,聽起來需要一個“禁止列表”來避免使用已知聲明支持但不支持的瀏覽器。 我建議在https://github.com/GoogleChrome/android-browser-helper/提交功能請求
對於 3,在https://github.com/GoogleChrome/android-browser-helper/提交錯誤
更新:我通過Bubblewrap生成的項目安裝了MI 瀏覽器。 MI 瀏覽器未聲明支持 Trusted Web Activity,Chrome 已按預期打開。 我傾向於與上述(1)相關的問題。
最后,可以為受信任的 Web 活動實現您自己的提供程序選擇器,您可以在其中維護“禁止列表”,而在 Android 瀏覽器助手中未實現自動化方式。 有關詳細信息,請參閱此示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.