需要帮助逐步实现 Flutter 中的应用程序链接/深度链接(适用于 Android)
以下答案将帮助任何正在寻找在 flutter 应用程序中启用应用程序链接的人。(答案不包括有关打开应用程序后处理 url 的信息,它只是提供设置 applinking 和 assetlink.json 文件的信息)
flutter 中的 App-Linking 可以分为 2 个步骤 -
对于意图过滤器 -
在 AndroidManifest 文件中,位于 - app>src>main,在具有其他 Intent 过滤器的 Activity 内,您需要添加 Intent 过滤器来处理 url :
<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="domainname1.com" />
<data android:host="domainname2.com" />
</intent-filter>
您可以添加要在应用程序内处理的域名来代替domainname1.com和domainname2.com,这里您通过单击网址打开应用程序的工作已完成。
验证域名 - 您需要添加一个包含 sha256 密钥和包名称的 assetlinks.json 文件,该文件确认该应用程序与该特定域相关。
对于此步骤,您可以前往assetlinks.json 验证。这里可以指定应用的域名、应用包名、sha256密钥。然后单击生成语句,它将提供您必须托管文件的路径,文件名和 url 应完全按照指定。
这里你需要注意两件事 -
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "<package_name_here>",
"sha256_cert_fingerprints": ["B8:..<complete sha256 key>..:38"]
}
},
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "<package_name_here>",
"sha256_cert_fingerprints": ["A5:..<other complete sha256 key>..:38"]
}
}
]
您还可以使用此命令来检查应用程序网址是否已验证
adb shell pm get-app-links <your_package_name>
如果 url 被写入经过验证,那么一切都可以完美运行。
注意:这些步骤只会设置在您的应用程序中打开特定的 URL,但您仍然需要进行路由或使用 gorouter 来处理使用特定 URL 打开应用程序时应用程序内部发生的情况。如果需要任何帮助,您可以在评论中添加