草庐IT

flutter - 在 Flutter 中实现推荐奖励

coder 2023-05-09 原文

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

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

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

这是我所追求的正确插件吗?有没有更好的资源?

编辑

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

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

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

这里有5个步骤:

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

步骤 2) 设置您的动态链接。它要求提供深层链接 URL 和动态链接名称。就我而言,我使用了 example.com/apps/refer_a_friend,您可以为动态链接指定任何您喜欢的名称。我只是叫我的“推荐 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 应该是什么,如何制作它,它应该指向哪里,或者如何处理它。这似乎是使这项工作发挥作用的缺失环节。

我还可以尝试设置哪些其他内容?

编辑 4

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

最佳答案

这就是我让它工作的方式:

  • 在 Firebase 控制台中创建您的项目。
  • 在左侧面板中选择“动态链接”
  • 点击“开始”
  • 输入域,如 yourappname.page.link
  • 点击“完成”
  • 在左侧面板中单击“项目设置”
  • 按照此处所述添加您的 Android 和 iOS 应用程序:https://firebase.google.com/docs/flutter/setup
  • 要使动态链接在 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);
        });
    }
    

    关于flutter - 在 Flutter 中实现推荐奖励,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56713171/

    有关flutter - 在 Flutter 中实现推荐奖励的更多相关文章

    1. ruby - 在 Ruby 中实现 `call_user_func_array` - 2

      我怎样才能完成http://php.net/manual/en/function.call-user-func-array.php在ruby中?所以我可以这样做:classAppdeffoo(a,b)putsa+benddefbarargs=[1,2]App.send(:foo,args)#doesn'tworkApp.send(:foo,args[0],args[1])#doeswork,butdoesnotscaleendend 最佳答案 尝试分解数组App.send(:foo,*args)

    2. ruby-on-rails - 如何在 Ruby on Rails 中实现无向图? - 2

      我需要在RubyonRails中实现无向图G=(V,E)并考虑构建一个Vertex和一个Edge模型,其中Vertex有_多条边。由于边恰好连接两个顶点,您将如何在Rails中执行此操作?您是否知道任何有助于实现此类图表的gem或库(对重新发明轮子不感兴趣;-))? 最佳答案 不知道有任何现有库在ActiveRecord之上提供图形逻辑。您可能必须实现自己的Vertex、EdgeActiveRecord支持的模型(请参阅Rails安装的rails/activerecord中的vertex.rb和edge.rb/test/fixtur

    3. ruby-on-rails - Rails 中的推荐引擎 - 2

      我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph

    4. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

      按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

    5. ruby-on-rails - 一般建议和推荐的文件夹结构 - Sinatra - 2

      您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应

    6. ruby - 在 Ruby 中实现 to_int 和 to_str 的后果 - 2

      我haveaclass它公开了一个字符串值和一个int值(分别是命令输出和退出代码)。除了通过to_s和to_i公开它们之外,我还使用to_str和to_int,如下所示:classStatusdefto_s@outputendalias:to_str:to_sdefto_i@status.exitstatusendalias:to_int:to_iend我的想法是能够在尽可能多的情况下使用这个对象。将其强制转换为字符串或整数会增加可用性。例如,我可以将对象与字符串连接起来:a_string="Outputwas:"+results(我想用这个作为int强制转换的例子,但是Fixnum

    7. ruby - 在 Ruby 中实现二叉树 - 2

      我一直在尝试在Ruby中实现BinaryTree类,但我得到了stackleveltoodeep错误,尽管我似乎没有在该特定代码段中使用任何递归:1.classBinaryTree2.includeEnumerable3.4.attr_accessor:value5.6.definitialize(value=nil)7.@value=value8.@left=BinaryTree.new#stackleveltoodeephere9.@right=BinaryTree.new#andhere10.end11.12.defempty?13.(self.value==nil)?true:

    8. ruby - 如何在 Ruby 中实现私有(private)内部类 - 2

      来自Java,我正在尝试在Ruby中实现LinkedList。我在Java中实现它的通常方法是有一个名为LinkedList的类和一个名为Node的私有(private)内部类,其中LinkedList的每个对象都作为Node对象。classLinkedListprivateclassNodeattr_accessor:val,:nextendend我不想将Node类暴露给外部世界。然而,通过Ruby中的这个设置,我可以使用这个访问LinkedList类之外的私有(private)Node类对象-node=LinkedList::Node.new我知道,在Ruby1.9中,我们可以使用

    9. ruby-on-rails - 你能为 Ruby on Rails 推荐好的数据网格类/gem 吗? - 2

      您能为RubyonRails推荐好的数据网格类/gem吗?喜欢http://code.google.com/p/zend-framework-datagrid/采埃孚 最佳答案 你也可以试试datagridgem。这不仅关注带有列的网格,还关注过滤器。classSimpleReportincludeDatagridscopedoUser.includes(:group)endfilter(:category,:enum,:select=>["first","second"])filter(:disabled,:eboolean)fi

    10. ruby-on-rails - 你为 Rails 推荐哪个状态机插件? - 2

      关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我正在为Rails3/ActiveRecord项目寻找一个相对简单的状态机插件。我做了一些研究并提出了以下插件:转换:https://github.com/qoobaa/transitions从旧的ActiveRecord状态机库中提取

    随机推荐