问题是在android 12或更高版本中通过链接打开应用程序。
在较低版本的android上一切正常。
当我看我的“应用程序信息”->“默认打开”屏幕。我看到未经批准的链接。
当我在支持的网址内打开该链接时,通过链接打开应用程序就可以了。
x1c 0d1x的数据
我已经阅读了关于在android文档中验证intent filter的内容,在我看来一切都很好。
https://developer.android.com/training/app-links/verify-site-associations#add-intent-filters
已将.well-known/assetlinks.json添加到我的域https://my.domain.net/.well-known/assetlinks.json中的.well-known/assetlinks.json内容(使用https://developers.google.com/digital-asset-links/tools/generator生成和检查)
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" : { "namespace": "android_app", "package_name": "my.package.name",
"sha256_cert_fingerprints": ["SHA_256"] }
}]
字符串
三次检查我使用的是正确的SHA_256。
还测试了.json是否可以使用上面提到的“语句列表生成器和测试器”链接。
AndroidManifest.xml中的Intent过滤器
<intent-filter
android:autoVerify="true"
android:label="@string/login_to_app">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="my.domain.net"
android:pathPrefix="/${dynamicVar}/our/application/"
android:scheme="https" />
</intent-filter>
型
此外,我上传应用程序播放商店只是为了确保这是没有问题的SHA证书或播放商店有关,但没有区别。
此外,我检查了我的应用程序包名称,它是正确的内部测试和调试。
我还添加了应用程序包名称的每一个组合的方式,只是为了确保。
不久:通过链接打开应用程序在android 12和更高版本不工作,由于不支持的网址.
我知道链接需要用.well-known/assetlinks.json进行验证。当我手动检查支持的网址时,它工作得很好,但这不是最终的解决方案。
我不知道我错过了什么。
有人知道我做错了什么吗?
2条答案
按热度按时间wfypjpf41#
”什么改变了?**
从Android 12开始,他们引入了一种检查支持的Web域的新方法。
较低版本的android保持不变。
Android 12中的验证如何工作?
在安装应用程序时,android向intent链接内的域发送异步请求,以检查.well-known/assetlinks.json是否存在且有效。
如何生成assetlinks.json?
我推荐使用google提供的这个工具来生成这个文件。它还可以检查assetlinks.json是否存在并正确设置。
发生器:https://developers.google.com/digital-asset-links/tools/generator
SHA-256表格在哪里?
1.打开Android Studio
1.打开您的项目
1.点击Gradle(从右侧面板,您将看到Gradle栏)
1.点击刷新(点击Gradle栏中的刷新,您将看到列表
1.项目的Gradle脚本)
1.单击您的项目(您的项目名称表单列表(根))
1.单击任务
1.点击Android
1.双击signingReport(您将在运行栏中获得SHA1和MD5(有时会在Gradle控制台中))
1.从模块选择下拉列表中选择应用程序模块以运行或调试应用程序
生成.json文件后,将其放入域的根目录(. well-known/assetlinks.json)。
我建议手动打开它只是为了确保。
https://my.domain.com/.well-known/assetlinks.json的
在应用中设置Intent链接
向您的AndroidManifest.xml添加
字符串
手动测试intent链接是否正常:
您可以在模拟器运行时运行此命令,它应该会打开应用程序:
型
手动测试intent链接
1.支持更新的域验证过程
1.重置设备上Android应用链接的状态
adb shell pm set-app-links --package PACKAGE_NAME 0 all
个1.调用域验证过程
adb shell pm verify-app-links --re-verify PACKAGE_NAME
个运行此命令后,请等待至少一分钟,以便app验证您的域名。
1.审核验证结果
adb shell pm get-app-links PACKAGE_NAME
个此命令的输出类似于以下内容:
型
之后,你就可以开始了,你的intent链接将在android 12和更低版本上工作。
最后测试,检查您是否已正确设置所有内容
运行:
型
来源:https://developer.android.com/training/app-links/verify-android-applinks
mrphzbgm2#
我也遇到了同样的问题,调试了好几天。
我不明白主机
*.example.com
中的通配符将尝试在没有子域的情况下进行验证。意味着验证者尝试:
https://example.com
而不是:
https://www.example.com的
没有子域名,我们有一个重定向301,根据官方指南不工作。