我正在尝试为单个TWA应用添加子域。我已经完成了从网站到应用程序的资产链接。即使链接完成,我也可以每次看到URL栏。
strings.xml
<resources>
<string name="app_name">XXXX </string>
<string name="asset_statements" translatable="false">
[{
\"relation\": [\"delegate_permission/common.handle_all_urls\"],
\"target\": {
\"namespace\": \"web\",
\"site\": \"https://www.xxxx.com\"}
},{
\"relation\": [\"delegate_permission/common.handle_all_urls\"],
\"target\": {
\"namespace\": \"web\",
\"site\": \"https://www.abcd.xxxx.com\"}
}]
</string>
</resources>
AndroidManifest
<activity
android:name="android.support.customtabs.trusted.LauncherActivity">
<!-- Edit android:value to change the url opened by the TWA -->
<meta-data
android:name="android.support.customtabs.trusted.DEFAULT_URL"
android:value="https://www.xxxx.com" />
<meta-data
android:name="android.support.customtabs.trusted"
android:value="https://www.abcd.xxxx.com" />
///在Android清单中添加了意图过滤器
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Edit android:host to handle links to the target URL-->
<data
android:scheme="https"
android:host="www.xxxx.com"/>
<data
android:scheme="https"
android:host="www.abcd.xxxx.com"/>
我可以看到没有网址栏的www.xxxx.com,但是对于www.abcd.xxxx.com,我可以看到网址栏。
https://developers.google.com/digital-asset-links/tools/generator
我使用以下链接检查了链接,并返回主机已授予应用深度链接
答案 0 :(得分:0)
我一直在努力尝试自己解决这个问题,虽然我还没有答案,但是我已经取得了足够的进展,可以在TWA内更改子域,而没有网址栏显示。
我的第一步是将资产报表设置为具有通配符:
<string name="asset_statements">
[{
\"relation\": [\"delegate_permission/common.handle_all_urls\"],
\"target\": {
\"namespace\": \"android_app\",
\"site\": \"https://*.newvote.org\"}
}]
</string>
然后,我可以将android.support.customtabs.trusted.DEFAULT_URL
元数据设置为子域中的任何URL,并且它可以与Web服务器上当前的assetlinks.json文件一起愉快地工作。但是,我无法在应用程序中更改子域/ URL,因为这会打开URL栏。
在测试时,我开始尝试使用不同的URL(我们的Web应用程序具有许多子域),并且我注意到先前测试的域开始起作用。似乎通过将URL设置为DEFAULT_URL
,应用程序以某种方式将它们缓存为受信任的。我曾尝试卸载该应用程序并清除我的Chrome缓存,但这种情况仍然存在,因此我不确定这是如何工作的。
我可以肯定地为您确认的是该设置:
<meta-data android:name="android.support.customtabs.trusted" android:value="@string/app_url" />
将无法正常工作,您正在尝试在类名称上设置元数据,当我探索android.support.customtabs.trusted
类时,我看到DEFAULT_URL
是唯一用于URL定义的属性。 / p>
到目前为止,我的结论是:我不认为您需要多个asset_statement。我不认为您需要多个元数据字段,也不相信在intent-filter中设置多个data:host字段会达到预期的效果。我认为目前最重要的是,目前尚没有支持在TWA中处理子域的方法。
只需确认当我测试并安装该应用程序的不同版本时,这种对可信URL的神奇缓存就会发生。在另一台设备上安装最新版本将还原为单个受信任的URL,并且子域导航失败。
答案 1 :(得分:0)
您应将assetlinks.json文件添加到您的应用可能访问的每个子域
所有这些链接应返回资产文件
https://www.xxxx.com/.well-known/assetlinks.json
https://www.abcd.xxxx.com/.well-known/assetlinks.json
还要确保遵循这些guidelines。
200个响应和内容类型application/json
重定向不起作用