ios - iOS 中的延迟深度链接

标签 ios deep-linking

我们正在尝试在我们的一款 iOS 应用程序中实现延迟深度链接,以鼓励用户邀请他们的 friend 使用该应用程序,并根据用户的推荐链接发生的安装次数来奖励用户。基本类似于TapStream's product .

考虑这个例子:

So, UserA shares their link, “ourappURL.com/refer?id=userA”, on any network they want. UserB clicks that link, which will take them to Safari and then bounce them to the App Store page where UserB downloads the app.

When UserB opens the app, the app checks which referral ID they came in on (if any). In this example, the referral ID would be “userA” as that’s the ID that was in the referral link. The app then sends this to our servers and we award UserA with a referral credit.

我正在尝试将这个问题分解为其核心部分。我相信第一部分是获取用户推荐链接的网页,以将推荐 ID 保存到设备上应用程序可以访问的位置。但由于 iOS 的沙盒特性,我不确定这是否可能。

我知道这从根本上来说是可能的,因为许多广告提供商都提供了跟踪广告事件安装情况的功能(例如,请参阅移动应用跟踪)。

最佳答案

我们也尝试过自己这样做,我将尝试在此处分解不同的步骤。

回到您的示例,您关于“记住”设备标识以及所有相关数据“id=userA”的说法是正确的。您对“iOS 的沙盒性质”的看法也是正确的,我认为这意味着不允许网页存储浏览器应用程序(Safari)之外的信息,并且应用程序(您的应用程序)无法访问其他应用程序存储的信息( Safari)。

我们的解决方案是将此设备存储到数据键值对的环境中,该环境既可以由浏览器访问,也可以由您的应用程序(即后端服务器)访问。

下一个挑战,仍然是最大的挑战,是如何从浏览器收集的信息中唯一地识别该设备?与 native 应用程序不同,浏览器中的 JavaScript 无法访问可用于唯一标识 iOS 设备的 IDFA。为了克服这个问题,人们可以想象使用浏览器应用程序和 native 应用程序都可用的通用信息的组合,即操作系统类型、公共(public) IP、屏幕尺寸等。请注意,来自这些数据字段不保证唯一性(想象一下两台 iPhone 6 通过同一路由器访问此网页)。因此,您的后端服务器(假设您使用它来存储此键值对)将希望制定一个关于如何处理键冲突的策略,即第二个键删除第一个键,或者您通过以下方式允许冲突存在:单个键的值队列。这实际上取决于您实际计划如何使用该技术。

最后一步是使用您之前在浏览器中使用的完全相同的字段在您的应用上形成此复合键,以在后端服务器上执行“查找”以检索之前存储的值。

以下是步骤摘要:

  1. 用户 1 通过向用户 2 发送以下链接来邀请用户 2:example.com?inviter=1
  2. 用户2访问网页P
  3. P 构造以下键值对并将其发送到您的服务器 S iOS|55.55.55.55|750×1334 -> informer_id=1
  4. 用户 2 前往应用商店并下载您的应用 A
  5. 用户 2 首先启动 A,A 使用相同的 key 联系 S(假设 IP 未更改)。
  6. S 使用传入的 key 找到值 informer_id=1,并且,假设用户 1 邀请 2 获得 5 分奖励。

希望这有帮助!

编辑 04/24:

既然 Derrick 在评论中提到了这一点,我想我会借此机会在这里结束我们的故事。

回到我的回答的开头,我提到我们已经尝试自己做这件事。我们有一个基于当前系统架构的工作原型(prototype)(无论如何都没有针对存储和分析这样的深度链接数据进行优化,或者意味着要优化),我们最终决定不向该项目分配任何额外的工程资源。

由于此匹配过程的启发式性质,我们发现该项目需要不断调试、调整和优化,以降低投资返回率。更重要的是,我们发现其他公司比我们更专业,做得更好。

距离我们停止使用内部系统大约已经有 6 个月了,我们并不后悔做出这样的决定。

在此过程中,我们与许多供应商(Appsflyer、Adjust、TapStream)合作,最终得到了 Branch Metrics https://branch.io .

您是否应该 DIY 还是再次与另一家公司合作取决于您的具体目标。我们最终决定继续使用 Branch,不仅因为其他供应商每月收费从 500 美元到数千美元不等,而 Branch 完全免费,而且他们提供的支持水平是无与伦比的。

关于ios - iOS 中的延迟深度链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55974352/

相关文章:

windows - 通过自定义模式打开 flutter 应用程序窗口

xcode - 防止核心数据将实体组合到一个表中

deep-linking - 未处理的应用程序链接的自定义选项卡

ios - 如何使用 facebook applink 托管动态内容 - IOS

Android 深度链接和 App 链接混淆

android - 使用深度链接的 Firebase 电子邮件验证 (Android)

ios - 在 iOS 上删除钥匙串(keychain)数据

ios - WKWebView 中的 Google disallowed_useragent

iphone - 在 Storyboard 的 ScrollView 中显示项目

ios - 如何使用 Parse Swift iOS 8 Xcode 6.4 注销