我已经按照此处的官方Google指南-https://developers.google.com/web/updates/2019/02/using-twa
用TWA构建了PWA,并生成了APK。正在发生的事情是,当将除Chrome以外的其他浏览器设置为默认浏览器时,其行为是不可预测的。例如:在默认使用MI Browser的小米手机上,我的应用程序就像快捷方式一样工作,并且页面仅加载到浏览器的一个标签中。这部手机已安装了Chrome,但我的应用仍然使用默认浏览器来呈现我的PWA。
官方文档规定以下内容:
今天,如果用户的Chrome版本不支持“受信任的Web”活动,则Chrome将使用“自定义标签”退回到简单的工具栏。其他浏览器也有可能实现受信任的Web活动使用的相同协议。 当主机应用对打开哪个浏览器有最终决定 时,我们建议您使用与“自定义标签”相同的政策:使用用户的默认浏览器,只要该浏览器提供所需的功能。
虽然指南中有此段,但我找不到任何有关如何为我的PWA设置首选浏览器的文档
答案 0 :(得分:3)
要在Chrome中打开URL,我正在使用Chrome中的“自定义”标签
androidx.browser.browser:1.0.0
首先,我检查是否支持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重写
答案 1 :(得分:3)
不建议强制将Chrome作为浏览器来处理“受信任的网络活动” ,因为number of browsers that support Trusted Web Activity is growing和开发人员应尝试尽可能尊重用户的浏览器选择< / strong>。
在implementation中选择浏览器的android-browser-helper将:
或者,开发人员可以选择用WebView fallback implementation替换数字2和3,即使在受支持的功能集上存在取舍。
关于以下内容:
在默认使用MI Browser的小米手机上,我的应用程序就像快捷方式一样工作,并且页面仅加载在浏览器的一个标签中。这部手机已安装了Chrome,但是我的应用仍然使用默认浏览器来呈现我的PWA。
这里可能会发生一些事情:
对于1,解决方案正在更新Chrome,一切正常。否则,请启用WebView后备。
对于2,听起来好像需要“禁止列表”,以避免使用已知的声明支持但不声明支持的浏览器。我建议在https://github.com/GoogleChrome/android-browser-helper/
提交功能请求对于3,在https://github.com/GoogleChrome/android-browser-helper/提交一个错误
更新:我为MI Browser安装了一个通过Bubblewrap生成的项目。 MI浏览器未声明对“受信任的网络活动”的支持,并且按预期打开了Chrome。我倾向于与上述(1)相关的问题。
最后,可以为信任的网络活动实现您自己的提供程序选择器,您可以在其中维护“禁止列表”,而在Android浏览器帮助器中未实现自动方式。有关详细信息,请参见this sample。