在Flutter中实现推荐奖励

时间:2019-06-22 06:30:35

标签: flutter firebase-dynamic-links referrals

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

我可以在网上找到唯一的参考文献:https://pub.dev/packages/firebase_dynamic_links#-readme-tab-

我不确定这是否是我的追求,但不幸的是,由于它是Flutter团队建立的,因此它对如何实际实施其中的任何方法提供了0种解释,因为他们希望您已经是一名专业的专职编码员,可以自己填补所有空白。

有人以前设置过吗?这是我追求的正确插件吗?有人有更好的资源吗?任何朝着正确方向的指针将不胜感激!

编辑:

沿着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步中,我引用的Deep Link URL实际上不存在。我不确定是否应该这样做。如果要在我的网站上创建此页面,但是如果是,那么我应该在该页面上放置什么?我目前的想法是,我应该在我的网站上创建一个从该地址到该应用程序的Google Play商店URL的重定向。我已经尝试过了,但是它没有重定向。

接下来,再次返回示例应用程序(这里我指的是我们在下面的注释中使用的示例,该注释来自此处: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控制台中,此域已验证并且当前已连接。它似乎工作正常。我想知道真正的问题是否是我的深层链接在这一点上实际上没有做任何事情,而且正如我提到的那样,我不确定自己应该做什么。

希望它足够详细,可以按照我的工作进行。

编辑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

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

编辑3:

我花了整整一天的时间浏览所有可以找到的示例。其中没有一个告诉我动态链接URL应该是什么,如何制作,应该指向何处或如何处理。这似乎是使它正常工作的缺失链接。

任何人都可以成功完成此设置吗?现在我们已经到了这一点,只有is的声音。

编辑4:

我知道很多人都在阅读此主题,所以我希望能够给大家一个可行的例子。我在此方面没有获得足够的帮助,所以我永远无法正常工作。我必须从我的应用程序中完全删除引荐,这样我才能在截止日期之前完成。对任何对此结果感到失望的人表示抱歉,您会比我更失望。

3 个答案:

答案 0 :(得分:1)

关于文档,您可以通读README page,其中介绍了所有可用功能以及如何设置项目以使插件正常工作。
最重要的是,您可以查看example application,其中包含该插件的完整实现的项目文件。您可以查看Dart代码和所有其他必需的设置。

现在,我想提出一个真正的问题:如果要设置推荐奖励,应该使用firebase_dynamic_links吗?
首先,您需要知道这是Firebase product suite的一部分。从您的问题中还不清楚您是否已经在项目中使用Firebase,但是,很可能仅在计划使用已使用的情况下才使用此产品。项目中的Firebase。
Firebase Dynamic Links 可完成此任务,如果您已经使用Firebase,将非常方便,但是,我不确定它是否可以作为独立产品使用。
使用Firebase对项目的其余部分也有一些影响,即您将收集分析数据等。

最后,firebase_dynamic_links不是推荐奖励的 Flutter解决方案。这只是 Firebase解决方案
Flutter没有其他插件,可以让您轻松设置这些奖励,但这是可以预期的。 firebase_dynamic_links是一种平台解决方案,即它依赖于Android和iOS插件。
如果您想设置奖励,则需要write your own platform-specific code并以这种方式处理深层链接,这也是firebase_dynamic_links为Firebase所做的工作。

答案 1 :(得分:0)

这就是我的工作方式:

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

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

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);
    });
}

答案 2 :(得分:0)

我找到并成功实施的最简单的解决方案

https://pub.dev/packages/flutter_branch_sdk

无论您是否在设备中安装了该应用。

场景 1:当您点击推荐链接并且您的手机中没有安装应用程序时 -> 它会将您重定向到 Google Play 商店或应用程序商店 -> 一旦您安装了该应用程序并来到该应用程序您将获得推荐链接中映射的推荐代码。

场景 2:当您的手机中已经安装了应用程序并点击推荐链接 - 应用程序将被打开,您将收到推荐链接中映射的推荐代码。

我找到的最简单的解决方案也是成功实施。