【问题标题】:How to implement referral program in mobile Apps for both Android and iPhone如何在 Android 和 iPhone 的移动应用程序中实施推荐计划
【发布时间】:2014-03-27 05:34:05
【问题描述】:

我们有一款可在 Google Play Store 和 Apple AppStore 中使用的移动应用,我们希望实施推荐计划以吸引更多用户安装和使用我们的应用。

这是用户故事:

  • 每个新用户(例如 John)都会获得一个独特的推荐链接,他/她可以在该链接中分享到 FB/TW/Email 或 SMS。
  • 当 John 的朋友单击该链接时,他们将被定向到其设备上的相应 AppStore 基地。
  • John 的朋友安装应用并打开应用的那一刻,我们的服务器应该会收到通知,我们会知道推荐是来自 John,John 将得到相应的奖励。

我们评估了许多移动应用安装跟踪工具,其中大多数工具在发布商/移动广告中得到了最佳使用。

感谢任何cmets,建议

干杯 詹姆斯

【问题讨论】:

  • Branch.io 指标可能有用。文档很差,但服务是一个不错的推荐代码服务
  • @portfoliobuilder 我正在尝试实现它,但我似乎无法做到这一点,您有工作示例吗?或者你能看看我的问题吗? stackoverflow.com/questions/39181681/…

标签: android ios iphone installation tracking


【解决方案1】:

我们正在我们的应用程序中使用类似类型的推荐系统,在新用户(收到链接的人)成功安装应用程序时向推荐人(实际共享应用程序链接的人)提供一定数量的奖励积分)。

我将尝试使用您的场景来解释我们的实现: 所以根据你的用户故事:

  • 每个新用户(例如 John)都会获得一个唯一的推荐链接,他/她可以使用 FB/TW/Email 或 SMS 将其分享给他的朋友。

  • 当 John 的朋友单击该链接时,他首先被重定向到一个 Servlet,该 Servlet 最终将他重定向到基于他的平台(Android/iPhone)的相应 AppStore 以下载该应用程序。

    李>
  • 请注意,我们可以使用 Servlet 找出点击链接的用户的 IP 地址、用户代理和设备型号。

  • 我们已经知道推荐链接属于 John,因此 servlet 将 John 朋友的 IP 地址、用户代理和/或设备模型映射到 John 在数据库中的条目。

  • 当 John 的朋友安装应用程序并打开应用程序时,应用程序会将 IP 地址、用户代理和/或设备型号发送到服务器。

  • 服务器检查所有用户的条目以找到推荐人,如果找到他,在我们的例子中是约翰,约翰得到相应的奖励..

就是这样。我们在上个月自己实施了这一点,它确实增加了我们的下载量。 让我知道这是否有帮助。

【讨论】:

  • Hi Puru 感谢您的回答,我对第 3 点很感兴趣,您正在以某种方式实施“设备指纹识别方法”,但问题是 IP 地址 + 用户代理 + 设备型号足以识别一个独特的设备?
  • 如果IP地址发生变化会怎样?例如,如果有人在使用 3G 时单击了推荐链接,但稍后在 WiFi 上首次运行该应用程序?
  • Branch - branch.io - 端到端构建了这个解决方案并免费赠送。他们甚至建立了一个信用奖励系统,允许您根据推荐人采取的行动向推荐人和被推荐人奖励积分。
  • 您可以在dev.branch.io/recipes/matching_accuracy 阅读有关指纹识别准确性和边缘情况的信息——让您可以根据需要的准确度自定义指纹识别体验(例如修改指纹到期前的时间)。 @JamesKhoo
  • 我们是否还有其他选择,因为这个答案是在 2014 年发布的,苹果可能会为应用商店提供更好的解决方案。
【解决方案2】:

如果有人仍在寻找这个问题的解决方案。我为同样的问题阅读了很多博客和文档,并得出以下结论:-

IP 地址 + 用户代理 + 设备型号不足以唯一识别设备。 所以,我认为使用动态链接会更好。您可以创建包含唯一 ID 的动态链接。并且这些数据将在 url 重定向到应用商店后仍然存在,即使在安装后,您的应用也可以从动态链接获取唯一 ID。Google 的 Firebase 可用于创建动态链接:-

https://firebase.google.com/docs/dynamic-links/

或者如果你想使用现成的解决方案,那么你可以参考 branch.io

【讨论】:

  • 你有样品吗?如果有的话可以分享一下吗?
  • 我们使用 branch.io 作为我们的解决方案。这是在应用程序端处理的。 Firebase 文档说它只适用于谷歌登录。
  • 你能分享一下链接吗,上面说它只适用于谷歌登录。这将有助于我说服我的经理。 Branch.io 是免费的还是付费的?
  • Firebase 正在处理一些极端情况。您可以查看文档以获取更多详细信息firebase.google.com/docs/dynamic-links/use-cases/… 并且 branch.io 对一定数量的用户是免费的,然后是付费的
  • 看来firebase是唯一已知的具有这种功能的sdk
【解决方案3】:

安卓

在 android 上,您可以创建一个安装广播侦听器,您可以在其中获取并保存指向 SharedPreferences 链接的引用部分

https://play.google.com/store/apps/details?id=com.example.app&referrer=example_referral_code_here

为了这个检查
Android - Is it possible to get install referrer programmatically

Get referrer after installing app from Android Market

https://developer.android.com/google/play/installreferrer/library.html

iOS

目前(2016 年 1 月)无法在您的应用中获取安装引荐来源代码,就像使用 android 一样。

我对 ios 的选择是:

  1. 用户框架/第三方服务,如 alau.me
  2. 指纹解决方法,类似于 Puru Pawar 建议的方法
  3. 只需让用户在您的应用中输入推荐代码

【讨论】:

    【解决方案4】:

    免责声明:对原始接受的答案不满意,我提供了一个替代解决方案,回到这个“流行”线程。

    Android 上,这根本不是问题。 Google 将允许您访问由registering a receiver 在安装时发送的引荐来源参数,您也可以利用他们的install referrer API

    对于 iOS,它有点棘手,因为它不受官方支持。正如here 建议的那样,您可以进行指纹识别,但这很麻烦并且具有高度的不准确性。我遇到了两个更优雅的解决方案:

    1. 详细解释基于 Cookie 的跟踪here
    2. 将 URL 复制到剪贴板(Firebase 似乎同时使用剪​​贴板和 cookie 方法,但这是基于个人观察 - 没有官方来源)。
      • 当用户访问您的网页时(即:example.com/invite/123),在重定向到 App Store 之前显示一个网页。
      • 在该页面中,让用户按下一个按钮,以便在通过focus()setSelectionRange() 选择一些位于隐藏输入中的字符串后,您可以使用document.execCommand('copy') 将字符串复制到剪贴板/粘贴板
      • 安装后,当用户登陆应用程序时,您可以做两件事:
        1. 通过UIPasteboard.general.string (swift) 捕获剪贴板/粘贴板内容并进行一些解析或 API 调用
        2. 将用户重定向回(通过其默认浏览器以避免 Cookie 不存在)在与初始链接(即:mydomain.com/retrieve)相同域的页面上,以便该页面将接收最初设置的 cookie (在步骤 1.) 浏览器在访问时轻轻共享。然后,您可以将用户重定向回您的原始链接,因为应用程序现已安装,通用链接现在将按预期工作。

    【讨论】:

      【解决方案5】:

      Gradle 文件

       implementation 'com.android.installreferrer:installreferrer:1.0'
      

      将代码放入需要接收推荐代码的活动中

       InstallReferrerClient mReferrerClient;
      
       mReferrerClient = InstallReferrerClient.newBuilder(this).build();
      
       mReferrerClient.startConnection(new InstallReferrerStateListener() {
       @Override
       public void onInstallReferrerSetupFinished(int responseCode) {
                  switch (responseCode) {
                      case InstallReferrerClient.InstallReferrerResponse.OK:
                          // Connection established
                          try {
                              ReferrerDetails response = 
       mReferrerClient.getInstallReferrer();
                              if (!response.getInstallReferrer().contains("utm_source"))
                                  edtPRferelCode.setText("" + 
       response.getInstallReferrer());
                          } catch (Exception e) {
                              e.printStackTrace();
                          }
                          mReferrerClient.endConnection();
                          break;
                      case 
       InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
                          // API not available on the current Play Store app
                          break;
                      case 
       InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE:
                          // Connection could not be established
                          break;
                  }
              }
      
              @Override
              public void onInstallReferrerServiceDisconnected() {
                  // Try to restart the connection on the next request to
                  // Google Play by calling the startConnection() method.
              }
          });
      

      分享链接示例

      https://play.google.com/store/apps/details?id=com.yourpackage&referrer=9BE46300

      【讨论】:

      • 我找到的最简单的答案。简单,没有任何问题。这对我帮助很大。谢谢。
      • 我该如何测试这个
      【解决方案6】:

      另一种方法是让您当前的用户创建一个唯一的代码,例如 David123 或 HenryABC。他们分享他们的代码(这很容易记住,因为它是个人的)。在您的应用程序中,您提供了一个推荐框,新用户输入代码以解锁其他功能。这样您就可以跟踪而不必担心指纹。指纹方法的最大问题是 iOS 不够独特,移动网络共享 IP 地址。因此,在伦敦使用 iPhone 6s 进行 EE 的人很可能与 100 多个其他人拥有相同的指纹。

      【讨论】:

        【解决方案7】:

        可以使用Google Campaign Measurement 来完成,其中在utm_source 中为每个用户提供唯一的数字/字符串,当用户的朋友安装该应用程序时您将收到该数字/字符串,因为Google Play 商店将在安装后broadcast 它。 参考this question

        【讨论】:

          猜你喜欢
          • 2011-01-31
          • 1970-01-01
          • 2021-08-09
          • 2012-07-23
          • 2011-09-12
          • 2020-11-14
          • 1970-01-01
          • 2012-10-08
          • 2014-12-15
          相关资源
          最近更新 更多