使用 Firebase 动态链接在 Flutter 应用中打开网络 url 内容
Opening web url content in Flutter app using Firebase Dynamic Links
我已经为我们的 Flutter 应用程序成功设置了 Firebase Dynamic links(目前仅 Android 可用)并且它适用于以下场景:
- 从应用生成动态 link 以在用户之间共享内容
- 可以从应用程序打开共享内容(如果未安装应用程序,用户将被带到 Play 商店)
- 如果应用程序生成的动态 link 在桌面网络浏览器中打开,用户将被带到我们网站上可用的相同内容(通过回退 url 我已经设置生成动态 link)
时
我要实现的场景是:
如果用户从我的网站将 url 分享给已安装我们应用程序的用户,我如何直接在应用程序上打开内容,而不是将用户从设备的网络带到网络内容浏览器。
例如:
当像这样的网页 url 发送给用户时,当用户从移动设备点击它时,它应该在我们的应用程序中打开,而不是在移动网络浏览器中加载。
https://mywebsite.com/profile/public/00352467
我该如何使这个功能发挥作用?
我在动态链接文档中没有找到任何关于此的信息。
目前我们正在使用 Firebase 提供的 .page.link
默认域测试此功能,希望连接到我们的自定义域,以便共享的 URL 对用户来说看起来更好。
来自 Flutter 深度链接 documentation,对于 Android,您需要:
Add a metadata tag and intent filter to AndroidManifest.xml inside the
tag with the ".MainActivity" name
因此,使用您给出的示例 url,https://mywebsite.com/profile/public/00352467
,您的 Intent 过滤器将如下所示:
<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>
点击 link https://mywebsite.com/profile/public/00352467
将打开应用程序。
为了获取打开应用程序的 uri,您可以像这样使用 uni_links 包:
导入包
import 'package:uni_links/uni_links.dart' as UniLinks;
获取初始Uri
Uri initialUri = await UniLinks.getInitialUri();
我已经为我们的 Flutter 应用程序成功设置了 Firebase Dynamic links(目前仅 Android 可用)并且它适用于以下场景:
- 从应用生成动态 link 以在用户之间共享内容
- 可以从应用程序打开共享内容(如果未安装应用程序,用户将被带到 Play 商店)
- 如果应用程序生成的动态 link 在桌面网络浏览器中打开,用户将被带到我们网站上可用的相同内容(通过回退 url 我已经设置生成动态 link) 时
我要实现的场景是:
如果用户从我的网站将 url 分享给已安装我们应用程序的用户,我如何直接在应用程序上打开内容,而不是将用户从设备的网络带到网络内容浏览器。
例如:
当像这样的网页 url 发送给用户时,当用户从移动设备点击它时,它应该在我们的应用程序中打开,而不是在移动网络浏览器中加载。
https://mywebsite.com/profile/public/00352467
我该如何使这个功能发挥作用?
我在动态链接文档中没有找到任何关于此的信息。
目前我们正在使用 Firebase 提供的 .page.link
默认域测试此功能,希望连接到我们的自定义域,以便共享的 URL 对用户来说看起来更好。
来自 Flutter 深度链接 documentation,对于 Android,您需要:
Add a metadata tag and intent filter to AndroidManifest.xml inside the tag with the ".MainActivity" name
因此,使用您给出的示例 url,https://mywebsite.com/profile/public/00352467
,您的 Intent 过滤器将如下所示:
<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>
点击 link https://mywebsite.com/profile/public/00352467
将打开应用程序。
为了获取打开应用程序的 uri,您可以像这样使用 uni_links 包:
导入包
import 'package:uni_links/uni_links.dart' as UniLinks;
获取初始Uri
Uri initialUri = await UniLinks.getInitialUri();