在Flutter中实施推荐奖励

Bis*_*ret 5 referrals flutter firebase-dynamic-links

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

我在网上可以找到的唯一参考资料是: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',
  ),
);
Run Code Online (Sandbox Code Playgroud)

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

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',
  ),
);
Run Code Online (Sandbox Code Playgroud)

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

PlatformException(short_link_error, 400: Your project does not own Dynamic Links domain: https://example.com
Run Code Online (Sandbox Code Playgroud)

我不确定哪个错误是正确的,因为在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
Run Code Online (Sandbox Code Playgroud)

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

编辑3:

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

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

编辑4:

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

Olg*_*lga 6

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

  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();
Run Code Online (Sandbox Code Playgroud)

为了接收动态链接,我在 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);
    });
}
Run Code Online (Sandbox Code Playgroud)


cre*_*not 1

关于文档,您可以阅读该README页面,其中解释了所有可用的功能以及如何设置您的项目以使插件正常工作。
最重要的是,您可以查看example应用程序,其中包含用于完整实现此插件的项目文件。您可以查看 Dart 代码和所有其他所需的设置。

现在,我想谈谈真正的问题:firebase_dynamic_links如果你想设置推荐奖励,你应该使用吗?
首先,您需要知道这是Firebase 产品套件的一部分。从您的问题中还不清楚您是否已经在项目中使用 Firebase,但是,如果您计划在项目中使用已经在项目中使用Firebase,则很可能只应使用此产品。
Firebase 动态链接 适用于此任务,如果您已经使用 Firebase,它会非常方便,但是,我不太确定它作为独立产品是否出色。
使用 Firebase 还会对项目的其余部分产生一些影响,即您将收集分析数据等。

总而言之,firebase_dynamic_links这不是Flutter的推荐奖励解决方案。这只是Firebase 解决方案
Flutter没有其他插件可以让您轻松设置这些奖励,但这是可以预料的。firebase_dynamic_links是一个平台解决方案,即它依赖于Android和iOS插件。
如果您想设置奖励,则需要编写自己的特定于平台的代码并以这种方式处理深层链接,firebase_dynamic_linksFirebase 也是如此。