【问题标题】:Google play not accepting instant app due to digital asset link由于数字资产链接,Google Play 不接受即时应用
【发布时间】:2021-05-27 05:10:12
【问题描述】:

我已经尝试了一周来解决这个问题,但没有成功! Google play 仍然不相信我已经正确链接了我的网站!每当我上传我的免安装应用时,我都会得到通常的结果:

您的网站“www.servstore.co”尚未通过数字资产链接协议链接到您的应用。请通过数字资产链接协议将您的网站链接到您的应用。

请注意,我的免安装应用和已安装的应用具有相同的代码库(单个模块),缩小后实际上为 9.4 MB。

我知道这个问题已经被问过很多次了,我也看到过很多关于这个的 SO 帖子,但是我读过的所有解决方案似乎都不适合我,到目前为止我实际上尝试了所有这些解决方案,但没有运气,到目前为止我为调试此问题所做的工作:

网站方面:

  1. 确保assetlinks.json 已上传到我的网站并使用适当的 Content-Type 标头进行管理。

  2. 确保文件在公共许可下可用 (777)

  3. 确保robots.txt 允许抓取文件,我实际上只有以下内容:

User-Agent: *
Allow: /.well-known*
  1. 已验证资产链接https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.servstore.co&relation=delegate_permission/common.handle_all_urls

  2. 确保资产链接使用正确的 SHA-256(Google Play 中的私钥),我也从不使用上传密钥,我直接使用相同的密钥对我的应用进行签名,并选择使用该密钥进行 Google Play 签名键。

应用端:

  1. asset_statements 添加到我的strings.xml 和AndroidManifest.xml 中应用程序标记下的元数据

  2. 确保包含应用链接的第一个意图过滤器在我的清单中具有auto-verify = true,还尝试将所有具有自动验证意图过滤器 URL 的 3 个活动标记为

  3. 在清单中为所有 3 个活动添加了default-url,并仅尝试使用主要活动。

  4. networkSecurityConfig添加到xml资源并在manfiest中引用:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">www.servstore.co</domain>
    </domain-config>
</network-security-config>

在 Google Play 中:

  1. 在新的 Google Play 控制台中启用了即时应用发布类型。

  2. 在 Google Play 中以标准发布类型发布了相同的代码,其版本代码高于我用于即时应用的版本代码。

我已经准备好尝试任何事情了..

这是我最重要的文件,删除不相关的活动:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:dist="http://schemas.android.com/apk/distribution"
    xmlns:tools="http://schemas.android.com/tools"
    package="co.servstore.client"
    android:targetSandboxVersion="2">

    <dist:module dist:instant="true" />

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <application
        android:name=".ServStoreApp"
        android:allowBackup="false"
        android:icon="${appIcon}"
        android:label="@string/app_name"
        android:roundIcon="${appIconRound}"
        android:supportsRtl="true"
        android:theme="@style/Theme.ServeStore.NoActionBar"
        android:usesCleartextTraffic="true"
        tools:ignore="GoogleAppIndexingWarning"
        tools:replace="android:allowBackup,android:theme"
        android:networkSecurityConfig="@xml/network_security_config">

        <service
            android:name=".services.notifications.NotificationService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="***" />

        <meta-data
            android:name="asset_statements"
            android:resource="@string/asset_statements" />

        <activity
            android:name=".ui.main.MainActivity"
            android:screenOrientation="nosensor"
            android:windowSoftInputMode="adjustResize|stateHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <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:host="www.servstore.co"
                    android:scheme="https" />
                <data android:scheme="http" />
            </intent-filter>
            <meta-data
                android:name="default-url"
                android:value="https://www.servstore.co" />
        </activity>

        <activity
            android:name=".ui.orders.OrderDetailsActivity"
            android:screenOrientation="nosensor">
            <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:host="www.servstore.co"
                    android:path="/businessOrders"
                    android:scheme="https" />
                <data android:scheme="http" />
            </intent-filter>
            <meta-data
                android:name="default-url"
                android:value="https://www.servstore.co" />
        </activity>
        <activity
            android:name=".ui.orders.CustOrderDetailsActivity"
            android:screenOrientation="nosensor">
            <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:host="www.servstore.co"
                    android:path="/userOrders"
                    android:scheme="https" />
                <data android:scheme="http" />
            </intent-filter>
            <meta-data
                android:name="default-url"
                android:value="https://www.servstore.co" />
        </activity>
    </application>

</manifest>

【问题讨论】:

    标签: android google-play-console android-instant-apps


    【解决方案1】:

    要解析到特定的主机 url,您应该提供主机。

    你可以尝试删除吗:

    <data android:scheme="http" />
    

    或为 http 方案添加host,如下所示

    <data
        android:host="www.servstore.co"
        android:scheme="http" />
    

    【讨论】:

    【解决方案2】:

    我也遇到过类似的困难,正在尝试一些可能对您有所帮助的方法。您的问题可能是缺少中间 SSL 证书。

    当您运行 App Link Tester 时,您可能会收到错误响应“URL 解决冲突,请链接并验证您的数字资产链接”

    如果您随后运行 Postman 连接到您的域(通过 https),您会收到“SSL 错误:无法验证第一个证书”。但是您会发现到服务器上的页面的 HTTPS 浏览器连接工作正常。

    就我而言,我从 Sectigo 了解到,一个中间证书与 SSL 一起安装,但第二个没有。我建议您致电 Sectigo 技术支持 (888.391.4357)。您可能需要指导才能获得缺少的中介证书。

    【讨论】:

      【解决方案3】:

      您没有包含您的 build.gradle(app),因此您可能会检查您的 SDK 版本。他们可能与Google play not accepting instant app due to digital asset link中报告的您确实需要的READ_PHONE_STATUS权限问题有关

      如果您只是隐式接受了添加,则可以尝试将其删除:

      <uses-permission
          android:name="android.permission.READ_PHONE_STATE"
          tools:node="remove" />
      

      该帖子还指出某些版本的播放服务存在问题。试试:

      implementation 'com.google.android.gms:play-services-base:17.6.0'
      implementation 'com.google.android.gms:play-services-instantapps:17.0.0'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-13
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        相关资源
        最近更新 更多