Flutter - 如果不是 android,动态链接会将用户发送到网站

Flutter - Dynamic links send user to a website if not android

我正在使用动态 links 插件创建一个 link,我希望当用户点击 link 时如果她或她不在 android 那么他或她必须被发送到一个网站,因为我只有一个 android 应用程序,但如果在 android 上,那么他必须被发送到该应用程序。如何得到想要的结果?插件中没有针对不同 os 的回退 link 的方法。我正在通过代码而不是在 firebase 控制台中创建动态 link。

根据 firebase,在手动构建动态 links 时,我们可以将其他平台参数设置为:

ofl:link 可在 Android 和 iOS 以外的平台上打开。这对于在桌面上指定不同的行为很有用,例如显示应用程序的完整网页 content/payload(由参数 link 指定)和另一个动态 link 以安装应用程序。

它还有一个 ifl,即如果 ios 上没有安装应用程序:

ifl: link 在未安装应用程序时打开。指定此项以在未安装应用程序时执行除从 App Store 安装应用程序以外的操作,例如打开内容的移动网络版本,或显示应用程序的促销页面。

但是在 flutter firebase dynamic links 插件中找不到 ifl 和 ofl 功能。

如果我正确理解了您的问题,您希望在用户使用 android 时使用 link,如果用户使用 ios 则使用其他。这可以通过导入 dart:io 并执行如下操作来完成:

if (Platform.isAndroid) {
  // add the link to the android page
} else if (Platform.isIOS) {
  // do something else
}

您可以手动将 ofl(或 afl,或 ifl)添加到长 Uri 字符串中并直接使用,甚至可以从中构建一个短 URL。

此代码使用异步函数中的 DynamicLinkParameters() 构造函数创建了一个 DynamicLinkParameters 变量 parameters,然后使用它创建了一个返回 link 的短 link =14=] 在桌面上:

final DynamicLinkParameters parameters = DynamicLinkParameters(
// constructor arguments
);

final Uri longLink = await parameters.buildUrl();
final ShortDynamicLink shortDynamicLink = await DynamicLinkParameters.shortenUrl(Uri.parse(longLink.toString() + "&ofl=https://example.com"));
final Uri dynamicLinkShortUrl = shortDynamicLink.shortUrl;