当前位置: 首页 > 知识库问答 >
问题:

iOS中的延迟深度链接

杨柏
2023-03-14

我们正在尝试在一款iOS应用中实现延迟深度链接,以鼓励用户邀请好友使用该应用,并根据用户的推荐链接安装次数来奖励用户。与Tapstream的产品基本相似。

请考虑以下示例:

因此,UserA在他们想要的任何网络上共享他们的链接“ourappurl.com/refer?id=UserA”。UserB点击这个链接,这个链接会把他们带到Safari,然后弹出到应用程序商店页面,在那里UserB下载应用程序。

当UserB打开应用程序时,应用程序会检查他们进入的是哪个推荐ID(如果有的话)。在本例中,引用ID将是“usera”,因为它是引用链接中的ID。然后应用程序将此发送到我们的服务器,我们授予UserA一个推荐信用。

我想把这个问题分解成核心部分。我相信第一部分是获得用户的推荐链接的网页,将推荐ID保存到应用程序可以访问的设备的某个地方。但我不确定这是可能的,因为iOS的沙盒性质。

我知道这从根本上是可能的,因为许多广告提供商提供了从广告活动中跟踪安装的能力(例如,参见移动应用程序跟踪)。

共有3个答案

梅逸清
2023-03-14

我们已经成功地使用剪贴板(NSPasteboard)实现了这一点:在允许用户下载应用程序之前,处理重定向到app store的web页面会粘贴到移动设备的剪贴板。安装应用程序后,它会在首次启动时使用NSPasteboard检查是否有适当编码的字符串。这个字符串可以包含感兴趣的文本,或者更安全的是,包含用于从后端获取感兴趣数据的令牌。在目标C中:

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSString *pasteboardString = pasteboard.string;

剪贴板可以在应用程序完成后清除,以避免重复相同的操作。

柯波峻
2023-03-14

这里有一个很好的解决方案:http://blogs.innovationm.com/deferred-deep-linking-in-ios-with-universal-link/

基本工作流程

  • 用户选择Web上的域链接。
  • 链接将引用ID设置到cookie。
  • 用户重定向到app Store。
  • 在应用程序启动时,在SFSafariViewController中加载推荐页面。
  • 推荐页面检查cookie,如果存在cookie,则使用推荐ID调用深入链接到应用程序。
仇睿
2023-03-14

我们自己也曾尝试这样做,我将在此尝试详细说明不同的步骤。

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

我们的解决方案是将此设备存储在一个既可被浏览器访问,也可被应用程序访问的环境中,即后端服务器。

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

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

以下是对步骤的总结:

  1. 用户%1通过向%2发送以下链接邀请用户%2:example.com?inviter=1
  2. 用户2访问网页P
  3. p构造以下键值对并将其发送到服务器的iOS55.55.55.55750×1334->inviter_id=1
  4. 用户2到应用程序商店下载您的应用程序A
  5. 用户2首先启动A,A使用相同的密钥联系S(假设IP没有更改)。
  6. s通过使用传入的这个键查找值inviter_id=1,假设用户1邀请2时奖励5分。

希望能有所帮助!

编辑04/24:

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

回到我回答的开头,我提到我们自己也试图做到这一点。我们有一个基于我们当前系统架构的工作原型(对于存储和分析这样的深度链接数据,它没有经过任何优化,也没有打算进行优化),我们最终决定不为这个项目分配任何额外的工程资源。

由于这个匹配过程的启发式性质,我们发现这个项目需要不断地调试、调优和优化以减少ROI。更重要的是,我们找到了比自己更专业、做得好得多的其他公司。

自从我们停止使用我们的内部系统以来,大概已经有6个月了,我们并没有后悔做出这样的决定。

在此过程中,我们与许多供应商合作过,Appsflyer、Adjust、TapStream,最终我们得到了分支度量https://Branch.io。

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

 类似资料:
  • 众所周知,iOS深层链接已经改变了一点,称为通用链接,有了通用链接,我们需要在您的Xcode项目中启用“关联域”,并在那里添加受支持的域,还有一些变化,如在域服务器上托管苹果应用站点关联JSON。 这一点我非常理解,但我的问题是我必须支持多个社区,可能每个使用应用程序的企业都会有自己的社区,所以将所有社区(域)添加到“关联域”中不是一件好事,如果有新企业使用应用程序,然后我需要提供一个应用程序更新

  • 我们正在为我们的android应用程序实现延迟的深度链接,但是当从facebook广告下载时,无法获得安装推荐器。 采取的步骤, 1.从分支创建深度链接。io仪表板= 2.对于在android中的重定向(当应用程序未安装时),web url设置为所需的推荐值。例如https://play.google.com/store/apps/details?id=mypackagename 3.当用户直接点

  • 我试图通过URL(通过电子邮件等共享)启动我的原生应用程序。Android似乎只响应HTTP深度链接URL(例如。,http://myapp.com/stuff),并且iOS只响应非HTTP自定义深度链接URL(例如。,myapp://stuff).是否有人找到了一个解决方案,可以让两个操作系统打开同一个URL? 此外,iOS有可能使用HTTP深层链接URL吗?类似于http://youtu.be

  • 我正在使用branch.io为我的Android应用程序实现一个延迟的深度链接 我正在处理用户点击链接但没有安装应用程序的用例(安装应用程序时我的链接已经起作用了)。目前,我的应用程序不是放在Play Store上,而是放在Fabric上。因此,我设置了深度链接,将用户重定向到类似https://betas.to/...的url。这样他最终就可以下载测试版,然后再下载应用程序。 不幸的是,我无法使

  • 在我阅读的过程中,iOS 9引入了通用链接。在苹果应用程序搜索编程指南的“支持通用链接”一节中,它说这与URL方案的深度链接并不完全相同,但我对这个话题并不完全清楚: 通用链接和URL方案之间的区别是什么?是不是通用链接只适用于网站中的超链接,以及邮件或消息应用程序? 通用链接取代URL方案吗? 通用链接是一种深层链接吗?

  • 问题内容: 我有一个输入,可以根据更改过滤ng-repeat列表。重复数据包含大量数据,并且需要花费几秒钟来过滤所有内容。我希望他们在开始过滤过程之前有0.5秒的延迟。 产生延迟的正确方法是什么? 输入项 重复 过滤功能 谢谢 问题答案: AngularJS 1.3+ 从AngularJS 1.3开始,您可以利用提供的属性轻松实现这一点,而无需使用。这是一个例子: HTML: JS: - 要么 -