当前位置: 首页 > 知识库问答 >
问题:

我们如何能请添加子域从相同的供应商到基于TWA的Android应用程序?

闻人英韶
2023-03-14

我正在尝试为单个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>

雄体

 <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没有url栏,但用于www.abcd。xxxx。我可以看到网址栏。

https://developers.google.com/digital-asset-links/tools/generator

我使用下面的链接检查了链接,它返回主机已授予应用程序深度链接

共有3个答案

陶成济
2023-03-14

要读取状态栏,需要检查以下两个步骤:

>

  • 您应该为每个子域添加/assetlinks.jsonendpoint。有关参考,请参见链接:https://developer.android.com/training/app-links/verify-site-associations#publish-json

    在android清单中,您应该添加带有主机值通配符的意图过滤器。注意:主机值应严格以*开头,不包含模式,如https://

    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW"/>
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE"/>
      <data android:scheme="https" android:host="*.xxxx.com"/>
    </intent-filter>
    

    您不必在asset_stations中明确指定所有子域。有了默认设置就足够了。

  • 隆安然
    2023-03-14

    应将assetlinks.json文件添加到应用可能访问的每个子域

    所以所有这些链接都应该返回资产文件

      https://www.xxxx.com/.well-known/assetlinks.json
      https://www.abcd.xxxx.com/.well-known/assetlinks.json
    

    还要确保它遵循这些指导原则。

    200响应和内容类型应用程序/json重定向将不起作用

    甄伟兆
    2023-03-14

    我一直在努力自己解决这个问题,虽然我现在还没有答案,但我已经取得了足够的进展,我可以从我的TWA中更改子域,而不必显示url栏。

    我的第一步是将我的资产语句设置为具有通配符:

        <string name="asset_statements">
            [{
                \"relation\": [\"delegate_permission/common.handle_all_urls\"],
                \"target\": {
                    \"namespace\": \"android_app\",
                    \"site\": \"https://*.newvote.org\"}
            }]
        </string>
    

    然后我就可以设置我的android了。支持自定义标签。可信的。默认URL元数据到我的子域上的任何URL,它与我当前的AssetLink配合得很好。json文件位于我的web服务器上。然而,我无法在应用程序中更改我的子域/url,因为这会打开url栏。

    在测试过程中,我开始尝试不同的URL(我们的web应用程序有许多子域),我注意到以前测试过的域开始工作。通过将URL设置为DEFAULT\u URL,应用程序似乎以某种方式将这些设置缓存为可信。我曾尝试卸载应用程序并清除Chrome缓存,但这种情况仍然存在,所以我不确定这是如何工作的。

    我可以肯定地为您确认以下设置:

    <meta-data android:name="android.support.customtabs.trusted" android:value="@string/app_url" />
    

    将不工作,您正试图在类名上设置元数据,当我探索android.support.customtabs.trusted类时,我可以看到DEFAULT_URL是用于URL定义的唯一属性。

    到目前为止,我的结论是:我不认为你需要多个资产负债表。我不认为您需要多个元数据字段,也不认为在intent过滤器中设置多个data:host字段会产生预期效果。我认为最重要的是,目前还没有一种受支持的方式来处理TWA中的子域。

    刚刚确认,在我测试和安装不同版本的应用程序时,这种神奇的可信URL缓存正在发生。在另一台设备上安装最新版本会恢复为单个受信任的URL,并且子域导航失败。

     类似资料:
    • 我想在我的应用程序中添加带有,但一旦我将插件添加到我的应用程序中。yaml,我的应用程序不再运行。下面是错误 失败:生成失败,出现异常。 > 错误:任务执行失败:app:transformDexArchiveWithExternalLibsDexMergerForDebug'。 通用域名格式。Android建设者德兴。DexArchiveMergerException:合并dex存档时出错:/Us

    • 问题内容: 我正在编写一个应用程序,当用户指示我的应用程序这样做时,该应用程序应该能够将小部件(仅文本框)添加到用户电话的主屏幕。我该怎么做? 我知道我可以添加一个应用小部件,但是如何添加更多呢? 问题答案: 从应用程序无法将小部件放置在主屏幕中。只有主屏幕可以将应用程序小部件添加到主屏幕。 相似链接link 但是您可以提供用户从widgetpicker中选择widget。

    • 例如,我知道应用程序包的名称是com.test.abc 我想在我的应用程序中提供一个链接,这样当用户点击该链接时,包名为com.test.abc的应用程序应该从play store下载并安装。

    • 我试图开发一个android应用程序,可以擦除其他应用程序的缓存数据,我试图浏览所有的博客,但没有一个对我有效,我可以通过以下代码清除我的应用程序的缓存 我想清除其他应用程序的缓存,可以任何机构请帮助我,如果我错了请纠正我,提前谢谢。

    • 据甲骨文说,, 返回一个新的完全未来,该完全未来由ForkJoinPool.common池()中运行的任务异步完成,该任务的值通过调用给定的供应商获得。 静态CompletableFuture supplyAsync(供应商-供应商,执行者-执行者)返回一个新的CompletableFuture,该新的CompletableFuture由在给定执行者中运行的任务异步完成,其值通过调用给定供应商获得

    • 我正在用Android开发一个应用程序。我不知道如何从应用程序发送电子邮件?