如何在 Android 和 iPhone 的移动应用程序中实施推荐计划
Posted
技术标签:
【中文标题】如何在 Android 和 iPhone 的移动应用程序中实施推荐计划【英文标题】:How to implement referral program in mobile Apps for both Android and 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 我正在尝试实现它,但我似乎无法做到这一点,您有工作示例吗?或者你能看看我的问题吗? ***.com/questions/39181681/… 【参考方案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 的选择是:
-
用户框架/第三方服务,如 alau.me
指纹解决方法,类似于 Puru Pawar 建议的方法
只需让用户在您的应用中输入推荐代码
【讨论】:
【参考方案4】:免责声明:对原始接受的答案不满意,我提供了一个替代解决方案,回到这个“流行”线程。
在 Android 上,这根本不是问题。 Google 将允许您访问由registering a receiver 在安装时发送的引荐来源参数,您也可以利用他们的install referrer API。
对于 iOS,它有点棘手,因为它不受官方支持。正如here 建议的那样,您可以进行指纹识别,但这很麻烦并且具有高度的不准确性。我遇到了两个更优雅的解决方案:
-
详细解释基于 Cookie 的跟踪here
将 URL 复制到剪贴板(Firebase 似乎同时使用剪贴板和 cookie 方法,但这是基于个人观察 - 没有官方来源)。
当用户访问您的网页时(即:
example.com/invite/123
),在重定向到 App Store 之前显示一个网页。
在该页面中,让用户按下一个按钮,以便在通过focus()
和setSelectionRange()
选择一些位于隐藏输入中的字符串后,您可以使用document.execCommand('copy')
将字符串复制到剪贴板/粘贴板
安装后,当用户登陆应用程序时,您可以做两件事:
-
通过
UIPasteboard.general.string
(swift) 捕获剪贴板/粘贴板内容并进行一些解析或 API 调用
将用户重定向回(通过其默认浏览器以避免 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。
【讨论】:
以上是关于如何在 Android 和 iPhone 的移动应用程序中实施推荐计划的主要内容,如果未能解决你的问题,请参考以下文章
为现有的 rails 应用程序创建 iphone 和 android 应用程序
如何在Android和iPhone的移动应用程序中实现推荐计划
到达下拉列表时单击iphone移动箭头键,应显示下拉列表内容
如何强制网站扩展以修复移动设备(Iphone android ..)