在 Flutter 中实现推荐奖励

2024-01-03

我想在我的应用程序中建立一个推荐系统,以便用户可以通过电子邮件/电话号码等(以最简单的方式)邀请他们的朋友,当确认被邀请者安装了该应用程序时,它将奖励原始邀请比如说,发件人一个月没有横幅广告。

我在网上能找到的唯一参考资料是这个:https://pub.dev/packages/firebase_dynamic_links#-readme-tab- https://pub.dev/packages/firebase_dynamic_links#-readme-tab-

我不确定这是否是我所追求的,不幸的是,因为它是由 Flutter 团队建立的,所以它对如何实际实现其中的任何一个提供了 0 个解释,因为他们有点期望你已经成为一名专业的全职 -时间编码员,能够为自己填补所有空白。

这是适合我所追求的插件吗?还有更好的资源吗?

Edit

沿着 Firebase 动态链接路径前进。我遇到的第一个障碍是它要求我拥有一个域,我可以在其中创建动态链接的 URL。所以我昨晚为自己注册了一个域,并按照 Firebase 的要求进行设置,以对其进行验证并连接到Firebase 项目(它会引导您完成此过程,一切似乎都工作正常,只是可能需要给您的 DNS 主机时间来反映此过程所需的 TXT 和 A 记录更改)。

所以现在我有一个空白的、经过验证的域,名为 example.com

现在在 Firebase 中,在我创建的项目下,左侧下方有一个名为“动态链接”的按钮。这将要求 example.com 通过您之前输入的 A 记录进行验证,但一旦验证,它将允许您创建新的动态链接。

这里有 5 个步骤:

步骤 1) 它会为您推荐一个简短的 URL 链接。就我而言:example.com/gd7W。我接受了这个并点击下一步。

步骤 2) 设置动态链接。它要求提供深层链接 URL 和动态链接名称。就我而言,我使用了 example.com/apps/refer_a_friend,您可以为动态链接指定您喜欢的任何名称。我刚刚将我的活动称为“推荐朋友促销”。打下一个。

步骤 3) 定义 iOS 的链接行为。我只是将其保留为“在浏览器中打开深层链接”

步骤 4) 定义 Android 的链接行为。我只是将其保留为“在浏览器中打开深层链接”

步骤 5) 活动跟踪、社交标签和高级选项。在这个阶段,这些东西似乎并不重要,而不是为了这篇文章所要求的,只是让事情发挥作用。这些东西用于在促销活动生效后对其进行分析和跟踪。您可以稍后返回并进行编辑。

因此,在步骤 2 中,我引用的深层链接 URL 实际上并不存在。我不确定是否应该这样做。如果我打算在我的网站上创建此页面,但如果是这样,我应该在此页面上放置什么?我目前的想法是,我应该在我的网站上创建一个从该地址到该应用程序的 google play 商店 URL 的重定向。我已经尝试过,但它没有重定向。

接下来,再次回到示例应用程序(这里我指的是我们在下面的评论中正在处理的示例,该示例来自此处:https://github.com/flutter/plugins/tree/master/packages/firebase_dynamic_links/example https://github.com/flutter/plugins/tree/master/packages/firebase_dynamic_links/example).

我认为我们需要查看此部分,因为它需要编辑以适合您之前步骤中的链接和地址:

final DynamicLinkParameters parameters = DynamicLinkParameters(
  uriPrefix: 'https://cx4k7.app.goo.gl',
  link: Uri.parse('https://dynamic.link.example/helloworld'),
  androidParameters: AndroidParameters(
    packageName: 'io.flutter.plugins.firebasedynamiclinksexample',
    minimumVersion: 0,
  ),
  dynamicLinkParametersOptions: DynamicLinkParametersOptions(
    shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
  ),
  iosParameters: IosParameters(
    bundleId: 'com.google.FirebaseCppDynamicLinksTestApp.dev',
    minimumVersion: '0',
  ),
);

我更改了这部分代码以尝试匹配我上面的工作,因此更新为:

final DynamicLinkParameters parameters = DynamicLinkParameters(
  uriPrefix: 'https://example.com/gd7W',
  link: Uri.parse('https://example.com/apps/refer_a_friend'),
  androidParameters: AndroidParameters(
    packageName: 'company01.appname', //The appID of my app on the store
    minimumVersion: 0,
  ),
  dynamicLinkParametersOptions: DynamicLinkParametersOptions(
    shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
  ),
  iosParameters: IosParameters(
    bundleId: 'company01.appname', //The appID of my app on the store
    minimumVersion: '0',
  ),
);

当我运行该应用程序并单击“获取短链接”按钮时,日志中出现以下错误:

PlatformException(short_link_error, 400: Your project does not own Dynamic Links domain: https://example.com

我不确定这是否是正确的错误,因为在 Firebase 控制台中,该域已经过验证并且当前已连接。它似乎工作正常。我想知道真正的问题是否是我的深层链接此时并没有真正执行任何操作,正如我所提到的,我不完全确定它应该做什么。

Edit 2

只是补充一下,当我单击“获取长链接”按钮时,它实际上似乎返回了一些内容,一个极长的 URL,如下所示:

https://example.com/gd7W?amv=0&apn=company01.appname&ibi=company01.appname&imv=0&link=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcompany01.appname%26hl%3Den

这似乎是我在不同点指定的所有组件,但可能不正确。不过,这看起来像是一种进步!

Edit 3

我已经浏览了我能找到的每一个例子。其中没有人告诉我动态链接 URL 应该是什么、如何制作它、它应该指向哪里或如何处理它。这似乎是让这项工作正常进行的缺失环节。

我还可以尝试进行哪些其他设置?

Edit 4

我知道很多人都在阅读这篇文章,所以我很乐意为大家提供一个可行的例子。我在这方面没有得到足够的帮助,所以我从来没有让它发挥作用。我必须从我的应用程序中完全删除推荐,这样我才能在截止日期前完成。


这就是我让它发挥作用的方式:

  1. 在 Firebase 控制台中创建您的项目。
  2. 在左侧面板中选择“动态链接”
  3. 点击“开始”
  4. 输入域名,例如 yourappname.page.link
  5. 点击“完成”
  6. 在左侧面板中单击“项目设置”
  7. 按照此处所述添加您的 Android 和 iOS 应用程序:https://firebase.google.com/docs/flutter/setup https://firebase.google.com/docs/flutter/setup
  8. 要使动态链接在 iOS 中工作,您应该执行一些额外的步骤,如下所述:

为了创建动态链接,我使用了以下代码:

String link = Constants.REFERENCE_BASE_URL + referenceId; // it can be any url, it does not have to be an existing one
final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://myappname.page.link', // uri prefix used for Dynamic Links in Firebase Console
      link: Uri.parse(link),
      androidParameters: AndroidParameters(
        packageName: 'com.example.myappname', // package name for your app
        minimumVersion: 0,
      ),
      iosParameters: IosParameters(bundleId: 'com.example.myappname'), // bundle ID for your app
    );
final ShortDynamicLink shortDynamicLink =
        await parameters.buildShortLink();

为了接收动态链接,我在 main.dart 文件中使用了以下代码:

@override
  void initState() {
  super.initState();
  initDynamicLinks();
}

void initDynamicLinks() async {
  final PendingDynamicLinkData data =
    await FirebaseDynamicLinks.instance.getInitialLink();
  final Uri deepLink = data?.link;

  if (deepLink != null) {
    Navigator.pushNamed(context, deepLink.path);
  }

  FirebaseDynamicLinks.instance.onLink(
    onSuccess: (PendingDynamicLinkData dynamicLink) async {
      final Uri deepLink = dynamicLink?.link;

      if (deepLink != null) {
        Navigator.pushNamed(context, deepLink.path);
      }
    }, 
    onError: (OnLinkErrorException e) async {
      print('onLinkError');
      print(e.message);
    });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Flutter 中实现推荐奖励 的相关文章

随机推荐