[英]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.