标签: android-app-links

Android 应用链接在已发布的版本中无法正常工作,但在本地安装中可以正常工作

我有一个使用应用链接的游戏。从我的计算机运行调试和发布版本时,应用程序链接工作正常,但不适用于从 Google Play 下载的版本。使用 Google Play 版本时,我会收到一个对话框,询问哪个应用程序应该打开链接。

我使用“Google Play 应用签名”并了解发布的 APK 由 Google 签名并具有不同的签名。我已将 Google Play 上列出的应用签名证书中的 SHA-256 证书指纹添加到我的assetlinks.json 中,因此它包含来自本地和 Google Play 版本的指纹。

我还从 Google Play 下载了一个派生的 APK,并确保指纹与 assetlinks.json 文件中的指纹匹配。

这是一个示例 URL,在 Android 中单击该 URL 时应打开该应用程序,它适用于本地构建,但不适用于 Google Play 版本。相反,我收到一个对话框,询问哪个应用程序应该打开链接。

https://letsdraw.fun/ec?parent=Z0ibN7m-H8jO1jCiMRQtY23VTpKjnIch

我正在从实时发布版本的 logcat 中写出 SHA256 指纹,以仔细检查它是否正确,并且看起来一切正常。

原始签名的 APK 和 Google Play 签名的 APK 可以从这里下载。这两个 APK 都是从 Google Play 下载的,一个是“原始的”,一个是“衍生的”,因此除了签名之外,它们应该是相同的。有趣的是,它们的尺寸略有不同。11,590,297 字节 vs 11,601,619 字节。

查看adb shell dumpsys package domain-preferred-apps原始签名 apk的输出是

  Package: com.scribble.exquisitecorpse
  Domains: letsdraw.fun …
Run Code Online (Sandbox Code Playgroud)

android applinks android-app-links

6
推荐指数
1
解决办法
991
查看次数

Android 应用程序链接手动验证不起作用

我有一个 Android 应用程序,其应用程序链接在运行 Android OS 11 的设备上按预期工作,但由于这些targetSdkVersion : 30更改,它们在运行 Android OS 12 的另一台设备上被破坏(默认情况下 Web 链接不会打开应用程序)。我应该转到操作系统级别设置并手动添加(请参阅我的应用程序屏幕截图)链接以使它们打开应用程序。

我的应用程序

有一些应用程序,例如 gmail,默认情况下已验证链接(请参阅 gmail 屏幕截图),我也试图通过遵循此处的Android 文档来为我的应用程序实现相同的目标。但是,当我尝试查看验证结果时,我没有看到预期的输出(请参阅终端屏幕截图)。我等了几分钟才查看验证结果,但还没有任何结果。可能我错过了一些东西,我需要一些帮助。谢谢。

邮箱

终端

android intentfilter android-app-links android-12

6
推荐指数
1
解决办法
1915
查看次数

未知命令:使用 adb shell 时 verify-app-links pm verify-app-links

我正在使用以下应用程序链接:https ://developer.android.com/training/app-links/verify-site-associations

使用cmd时:adb shell pm verify-app-links

show: Unknown command: verify-app-links
Run Code Online (Sandbox Code Playgroud)

我的adb版本是:

$ adb --version
Android Debug Bridge version 1.0.41
Version 31.0.3-7562133
Run Code Online (Sandbox Code Playgroud)

几乎是最新的,为什么未知命令:verify-app-links?

android adb android-app-links

6
推荐指数
1
解决办法
3870
查看次数

Android 12 中的深度链接只能在生产环境中使用吗?

这个问题实际上有两个部分

从 Android 12 开始,深层链接发生了很大变化。

  1. 域名验证
  2. 用户批准打开应用程序的默认链接

我的第一个问题是这两个都需要实现才能使深层链接发挥作用吗?

其次,在阅读文件时,我发现了这个特殊的注释,其中包含以下内容

不要在清单文件中发布带有公众无法访问的开发/测试 URL 的应用程序(例如只能通过 VPN 访问的任何 URL)。这种情况下的解决方法是配置构建变体,为开发构建生成不同的清单文件。

这是否意味着访问受限的暂存环境不能用于测试?

笔记:

  1. 我已使用确认数字资产链接文件验证了我的数字链接资产,并且它有效
  2. 我的清单看起来像这样
  <activity
          android:name=".view.activity.MemberProfileActivity"
          android:screenOrientation="portrait"
          android:noHistory="true"
          android:windowSoftInputMode="adjustResize|stateHidden">
          <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="http" />
              <data android:scheme="https" />
              <data
                  android:host="@string/base_domain"
                  android:pathPrefix="/member_profile/" />
          </intent-filter>
      </activity>
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏。

android android-manifest android-deep-link android-app-links android-12

6
推荐指数
0
解决办法
1129
查看次数

具有动态功能的即时应用程序始终显示带有1个选项的消歧对话框

我正在尝试动态功能和Instant Apps。为了在各种功能之间导航,我使用了深层链接。

每次导航到另一个“活动”时,都会看到消歧对话框少于1秒,其中列出了1个应用程序。请注意,“ Once”和“ Always”(在荷兰语中)的选项是如何变灰的。

示例Github项目

我创建了一个简约的示例,该示例与我在Github上的当前结构相匹配。需要Android Studio 3.5-RC2

消歧对话框简短显示

一些上下文:

我非常有信心,深层链接配置正确。但是由于你们还是想检查一下,因此配置如下:

1-清单:

<activity
            android:name=".ProfileActivity">

        <intent-filter
                android:autoVerify="true"
                android:priority="100">

            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                    android:host="giddy.entreco.nl"
                    android:pathPrefix="/profile"
                    android:scheme="http" />
            <data android:scheme="https" />

        </intent-filter>

    </activity>
Run Code Online (Sandbox Code Playgroud)

2-Assetlinks 我的域包含一个可公开访问的assetlinks.json

3-Sha's正确 我使用的sha's正确

Executing tasks: [signingReport] in project

SHA1: 3A:52:19:77:C1:AD:18:F4:98:21:77:74:37:DC:9B:89:02:64:6E:C6
SHA-256: 25:DD:C3:7B:8E:35:D3:39:D5:D4:6C:B5:EA:7D:14:AF:82:EC:9C:56:A6:F5:76:A3:E1:D7:69:B3:EC:58:72:E8
Valid until: Saturday, March 21, 2048
Run Code Online (Sandbox Code Playgroud)

4-确认的数字资产链接文件 所有检查均通过 https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://giddy.entreco.nl&relation=delegate_permission/common.handle_all_urls

5-测试URL意图 也可以!唯一的问题是我在短时间内看到了消歧对话框。

附加信息

  • apply plugin: 'com.android.dynamic-feature'在所有模块中使用(app当然课程除外)

  • Android Studio:3.5 RC2;Android-gradle-plugin:3.5.0-rc02

  • 我的设备是OnePlus6-配备氧气9.0.7和Android 9

  • 谷歌官方样片 …

android android-manifest android-instant-apps android-app-bundle android-app-links

5
推荐指数
1
解决办法
199
查看次数

在Play商店中启用该应用后,Android应用链接无法正常工作

我已经根据以下链接实现了Android应用程序链接。

https://developer.android.com/studio/write/app-link-indexing.html

https://developer.android.com/training/app-links

我已经将assetlinks文件托管到我们的域https://ourdomain/.well-known/assetlinks.json中, 而且我已经使用https://developers.google.com/digital-asset-links/tools/generator 和从android studio的应用链接助手也。并通过两种方式获得了验证状态。

现在,当我生成一个已签名的构建并通过Google驱动器链接对其进行测试时。Android应用程序链接按预期工作(单击链接后,应用程序将打开,而无需打开适用于android 6.0及更高版本的消歧对话框)。

将相同版本上传到Play商店后,它不起作用。

以下是清单文件中使用的代码。

            <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="<ourdomain>" />
        </intent-filter>
Run Code Online (Sandbox Code Playgroud)

编辑:Android应用程序链接将其上传到Play商店后,按预期工作了一天。并在第二天重新开始消除歧义对话。知道可能是什么问题吗?

Play商店中的同一版本在不同的日子给了我两个不同的状态,分别是AskAlways

在此处输入图片说明 在此处输入图片说明

adb shell dumpsys程序包domain-preferred-apps

当我运行上面的命令

android android-studio react-native react-native-android android-app-links

5
推荐指数
1
解决办法
131
查看次数

语句列表生成器和测试器拒绝其自己生成的内容

所以,基本上我在实现应用程序链接的第一步中,我偶然发现了这个工具:

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

我给它我的域名、我的包名称,然后从 Play 商店控制台复制粘贴我的应用程序包指纹。它assetlinks.json为我生成一个文件,我根据需要将其放在https://my-domain/.well-known/assetlinks.json我测试下载,它有效,然后我要求这个工具来测试它,它说

No app deep linking permission found for package_name at my_domain.
Run Code Online (Sandbox Code Playgroud)

我的日志表明GoogleAssociationService来了并获取了文件(200 状态响应和正确的字节数)。

所以基本上我输入了好的值,它生成它,然后获取它并告诉我它是错误的,我错过了什么?他怎么会对自己创造的东西感到不高兴呢?

android android-app-links

5
推荐指数
1
解决办法
1765
查看次数

Google 的数字资产链接文件缓存机制可以被操纵吗?

我注意到我的设备和托管在https://example.com/.well-known/assetlinks.json上的 DAL 之间的缓存机制的影响,我希望了解它是如何工作的,以及是否可以绕过它。

问题是我正在对 DAL 的更改进行原型设计(特别是添加另一个应用程序,但该更改应该与问题的目的无关),并且从应用程序的角度看不到更改。例子:

  1. 我从这个 DAL 开始:
[
  {
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": {
      "sha256_cert_fingerprints": [
        "<redacted>"
      ],
      "namespace": "android_app",
      "package_name": "com.my_app"
    }
  }
]
Run Code Online (Sandbox Code Playgroud)
  1. 我安装了com.my_app,验证成功。

  2. 我将 DAL 编辑为以下内容(请注意添加了第二个应用程序条目):

[
  {
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": {
      "sha256_cert_fingerprints": [
        "<redacted>"
      ],
      "namespace": "android_app",
      "package_name": "com.my_app"
    }
  },
  {
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": {
      "sha256_cert_fingerprints": [
        "<redacted>"
      ],
      "namespace": "android_app",
      "package_name": "com.my_other_app"
    }
  }
]
Run Code Online (Sandbox Code Playgroud)
  1. 我安装了com.my_other_app,验证失败。
  2. 等待24小时,重新安装com.my_other_app,验证成功。

使用Google 的语句列表测试器 …

android digital-assets-links android-app-links

5
推荐指数
0
解决办法
729
查看次数

使用 Android 应用程序链接作为 OAuth2 重定向 URI

是否可以使用 Android 应用程序链接,例如https://https://my-app.com/callback在 OAuth2 流程结束时从 Android WebView 重定向回我的应用程序?我知道正常的深层链接如何工作,例如com.my-app://my-app://可用于重定向回我的应用程序。根据我的理解,WebView 不知道如何处理此类协议,将请求传递给操作系统,然后操作系统将请求传递给我的应用程序,如果AndroidManifest.xml.

这可以通过方案来完成吗https://?或者重定向始终会被 WebView 捕获,并且无法重定向回我的应用程序?

指定我想要通过步骤实现的目标:

  1. 提供了一个 IntentFilterAndroidManifest.xml来处理应用程序链接,例如:
<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="http" android:host="my-app.com/callback" />
 <data android:scheme="https" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
  1. assetlinks.json提供了有效的https://my-app.com/.well-known/assetlinks.json(此时,IntentFilterIntent日志显示 JSON 验证成功,我可以使用类似命令从终端打开应用程序npx uri-scheme open https://my-app.com/callback
  2. CustomTabsIntent.launchUrl我的应用程序通过使用如下 URL启动来启动 OAuth2 流程:
https://accounts.google.com/o/oauth2/v2/auth?
 scope=email%20profile&
 response_type=code&
 state=state&
 redirect_uri=https://my-app.com/callback&
 client_id=client_id
Run Code Online (Sandbox Code Playgroud)

完成这些步骤后,我希望我的应用程序在成功登录后打开,因为它是 URL 的有效处理程序,并且不希望卡在浏览器中。这可能吗,或者请求永远不会从浏览器转发到操作系统,因为浏览器是该https://方案的有效处理程序?

如果上述不可能,是否有办法从 WebView 导航回应用程序,提供 …

android deep-linking oauth-2.0 applinks android-app-links

5
推荐指数
1
解决办法
7983
查看次数

Google Ads 应用互动广告系列不适用于 Firebase 动态链接

我尝试使用 Firebase 动态链接运行应用互动广告系列,但收到一个问题:“该链接不起作用,因为 Google Ads 不支持第三方重定向网址”。将其替换为支持的链接类型`。

您知道如何将动态链接应用于 Google Ads 应用互动广告系列吗?

deep-linking ios-universal-links firebase-dynamic-links google-ads-api android-app-links

5
推荐指数
0
解决办法
490
查看次数