android - 使用 Firebase 动态链接在 Flutter 应用中打开网页 url 内容
问题描述
我已经成功地为我们的 Flutter 应用程序设置了 Firebase 动态链接(目前仅适用于 Android),它适用于以下场景:
- 从应用程序生成动态链接以在用户之间共享内容
- 可以从应用程序打开共享内容(如果未安装应用程序,用户将被带到 Play 商店)
- 如果从应用程序生成的动态链接在桌面网络浏览器中打开,用户将被带到我们网站上可用的相同内容(通过我在生成动态链接时设置的后备 URL)
我想要实现的场景是:
如果用户将我网站上的 url 分享给已经安装了我们的应用程序的用户,我如何直接在应用程序上打开内容,而不让用户从设备的网络浏览器转到网络内容。
例如 :
当像这样的 web url 被发送给用户时,当用户从移动设备上点击它时,它应该在我们的应用程序中打开,而不是在移动 web 浏览器中加载它。
https://mywebsite.com/profile/public/00352467
我该如何让这个功能发挥作用?
我在动态链接文档中没有找到任何相关信息。
目前我们正在使用.page.link
Firebase 提供的默认域测试此功能,希望连接我们的自定义域,以便共享 URL 在用户看来更好。
解决方案
从 Flutter Deep Linking文档中,对于 Android,您需要:
将元数据标签和意图过滤器添加到带有“.MainActivity”名称的标签内的 AndroidManifest.xml
因此,使用您提供的示例 url https://mywebsite.com/profile/public/00352467
,您的意图过滤器将如下所示:
<meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
<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="mywebsite.com" />
</intent-filter>
单击链接https://mywebsite.com/profile/public/00352467
将打开该应用程序。
为了获取打开应用程序的 uri,您可以像这样使用uni_links包:
导入包
import 'package:uni_links/uni_links.dart' as UniLinks;
获取初始 Uri
Uri initialUri = await UniLinks.getInitialUri();
推荐阅读
- mysql - MySQL:基于另一个并不总是具有匹配值的连接表进行排序
- android - 如何为 Launcher3 默认工作区设置最喜欢的应用程序 - Android Source
- css - 将图像放入使用纯 CSS 完成的基本梯形?
- c++ - 将 ProcessEntry32.szExeFile 与用户输入的数据进行比较时,C++ _wcsicmp 代码未编译
- javascript - 你如何让用户在 html 中为 select 标签选择默认值?
- php - 如何在 linux 上的 git hook 中重新启动进程
- sql - 如何从错误消息sql server中查找表名和列名
- javascript - 在循环中调用 resolveLocalFileSystemURL
- git - Git提交然后签出和签出然后提交之间有区别吗?
- c# - 如何使用 philips 强大的散列算法使用 C# 提取 32 位音频指纹?