Flutter 在flifter中实现推荐奖励

Flutter 在flifter中实现推荐奖励,flutter,firebase-dynamic-links,referrals,Flutter,Firebase Dynamic Links,Referrals,我想在我的应用程序中设置一个推荐系统,这样用户就可以通过电子邮件/电话号码等(以最简单的为准)邀请他们的朋友,当确认被邀请人已经安装了该应用程序时,它将奖励原始邀请发送者,比如说,一个月没有横幅广告 我能在网上找到的唯一参考资料是: 我不确定这是否是我想要的,不幸的是,因为它是由Flatter团队建立的,它提供了关于如何实际实现其中任何一项的0个解释,因为他们希望您已经是一名专业的全职程序员,能够自己填补所有空白 这是我想要的插件吗?还有更好的资源吗 编辑 沿着Firebase动态链接路径前进。

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

我能在网上找到的唯一参考资料是:

我不确定这是否是我想要的,不幸的是,因为它是由Flatter团队建立的,它提供了关于如何实际实现其中任何一项的0个解释,因为他们希望您已经是一名专业的全职程序员,能够自己填补所有空白

这是我想要的插件吗?还有更好的资源吗

编辑 沿着Firebase动态链接路径前进。我遇到的第一个障碍是它要求我拥有一个域,我可以在其中创建动态链接的URL。因此,我昨晚注册了一个域,并按照Firebase的要求对其进行了设置,以使其得到验证并连接到Firebase项目(它会帮助您完成这一过程,而且一切看起来都很正常,只需要给您的DNS主机时间来反映TXT和此过程所需的记录更改)

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

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

这里有5个步骤:

步骤1)它为您提供了一个简短的URL链接。在我的例子中:example.com/gd7W。我接受了这个,然后打下一个

步骤2)设置动态链接。它要求一个深度链接URL和一个动态链接名称。在我的例子中,我使用example.com/apps/reference\u a\u friend,你可以给动态链接取任何你喜欢的名字。我刚才叫我的“推荐朋友晋升”。点击下一个

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

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

步骤5)活动跟踪、社交标签和高级选项。在这个阶段,这些东西似乎并不重要,这篇文章所要求的只是让事情运转起来。这些东西是用来分析和跟踪你的促销活动,一旦它起作用。您可以稍后回来编辑它

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

接下来,再次回到示例应用程序(这里我指的是我们在下面的评论中正在处理的示例,该评论来源于此处:)

我认为这一部分是我们需要了解的,因为它需要编辑,以适应您之前步骤中的链接和地址:

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控制台中,此域已验证并当前已连接。它似乎工作得很好。我想知道真正的问题是我的深层链接在这一点上没有真正起到任何作用,正如我提到的,我不完全确定它应该做什么

编辑2 只是补充一下,当我点击Get Long链接按钮时,它实际上似乎返回了一些东西,一个非常长的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
这似乎是我在不同点指定的所有组件,但可能不正确。这看起来像是一种进步

编辑3 我已经看过了我能找到的每一个例子。他们中没有一个人告诉我动态链接URL应该是什么,如何创建,应该指向哪里,或者如何使用它。这似乎是使这项工作正常进行的缺失环节

我还可以试着做些什么

编辑4
我知道很多人都在读这篇文章,所以我希望能给大家举一个有效的例子。我在这方面没有得到足够的帮助,所以我从来没有让它工作过。我必须从我的应用程序中完全删除推荐,这样我才能在截止日期前完成

关于文档,您可以通读,其中解释了所有可用功能以及如何设置项目以使插件工作。
除此之外,您还可以查看,其中包含此插件完整实现的项目文件。您可以查看省道代码和所有其他必需的设置

现在,我想问一个真正的问题:如果你想设立推荐奖励,你应该使用
firebase\u dynamic\u链接吗?
首先,您需要知道这是系统的一部分。您的问题不太清楚您是否已经在项目中使用Firebase,但是,如果您计划在项目中使用Firebase或已经在项目中使用Firebase,则您最有可能只使用此产品。
适用于此任务,如果您已经使用Firebase,则非常方便,但是,我不太确定它作为一个独立产品是否很好。
使用Firebase也会对项目的其他部分产生一些影响,例如,您将收集分析数据等

总之,这不是推荐奖励的颤振解决方案。它只是Firebase的解决方案 没有其他的Flitter插件可以让你轻松设置这些奖励,但这是意料之中的
firebase\u dynamic\u links
是一种平台解决方案,即it rel
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();
@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);
    });
}