iOS:一键拉起+无感知记录关系链 技术猜想

1,736 阅读6分钟

声明:本文只做技术方案调研,与其他具备此技术公司的核心技术无任何关联性可言。如有雷同,纯属巧合。不存在任何侵权且不负任何法律责任。


在APP的使用场景中有一种情景,在某款APP中看到一种活动转发好友注册可赚取佣金,于是直接在应用内点击分享发送给微信好友,微信好友看到的是个URL链接形式的消息,点击链接,微信内置浏览器打开H5页面并提示是否在应用内打开,点击打开按钮,假如手机里有安装该应用,则会无缝打开,注册后转发者将会获取5枚金币;无应用跳转至App Store应用市场。

在这种场景下我们可以拆分出的需求技术点如下

### 一键拉起(applink)
URL Schemes     (ios 9.4之前)
Universal Link  (ios 9.4之后)

### 记录用户链
???

我们利用apple原生提供的Universal Link我们可以实现吊起应用,相关的技术点可参考苹果官方文档或相应的技术栈博客这里就不再赘述。


而真正复杂的技术点在如何记录用户之间的关系链路这一层:即如何知道在新用户通过分享链接注册后,确定是“我”推荐的功劳并赚取佣金

因为我们不管无论用户A与用户B如何去建立起来链接,中间一定要有一层中间件用于保存两者的公共信息用作比较从而确定其唯一性。这个中间件可以视作为服务器,或者是手机本地缓存。

我们先来分析一下我们可以用哪些方式来实现这个功能

1.利用直接的邀请码

这种情景的实现需要用户A在分享出去的链接并同时发送一个注册邀请码,可由后台生成并绑定用户A的ID作为唯一标识,用户B在打开链接后看到页面的同时也可以看到该邀请码,当打开应用后的注册阶段,需要填入邀请码,注册成功,并上传至服务器信息包含新用户ID + 邀请码。服务器开启规则判断,如果存储的邀请码中有跟之前重复的字段,则开启查找邀请者,并下发用户A以相应的奖励数据

2.利用生成二维码

这种实现场景其实跟上条中的方案大同小异,只不过是将邀请码转换为图片的形式进行处理,逻辑上少了新用户手动输入邀请码的步骤,但却多了需要用户将此二维码保存相册或开启相机扫描的步骤

上述的两种方案中确实可以实现如何将用户关系进行联系起来,现有的APP中也有这种做法并规模化的。然而暴露出的问题是繁琐性及用户有感知体验


而如何要求其是用户无感知,我们想到以下的一些方案

3.利用邀请链接内隐藏邀请码 + iOS系统粘贴板

这种场景的实现方式为,用户A分享链接中携带有隐藏拼接的邀请码,新用户在H5页面中打开时同步操作对此链接进行隐藏复制。继而新用户在打开APP的注册页面时,利用[UIPasteboard generalPasteboard]系统API剪贴板方法进行查找复制,过滤出该邀请码之后连同注册请求一起上发到服务器,进行对比查找可对应上用户关系

此方法可粗略实现需求,但是可控性将大大降低,因为我们不能确保用户在打开这个页面之后不再打开其他的页面或者复制其他字符串,而这中间只要出现一个环节的“操作不当”都会造成整条链路的断裂

4.UDID

该方案有个前提是需要用户Safari浏览器打开H5页面,获取到该设备的UDID+用户A的 ID后上传服务器,在注册阶段时再利用iOS原生获取该设备的UDID+新用户ID上传,服务器对比后下发信息。参考链接:www.skyfox.org/safari-ios-…

此方法受限于苹果私有API的封锁,随着苹果对程序内获取UDID封杀的越来越严格,私有api已经获取不到UDID,Mac地址等信息

5.基于文件系统访问

iOS系统基于OSX,其也有文件系统的访问权,/private/var/folders。具体实现思路为新用户在打开H5页面之后同时保存用户A的ID保存至该文件下(不知道具体怎么做),打开APP之后注册阶段再利用iOS方法获取到该文件夹下的信息+新用户ID上传服务器,做用户ID校验。

上图为利用爱思助手打开的iPhone文件管理

此方案的实现处于摸索中,因为暂不知道如何利用H5及iOS访问私有文件夹下的信息,涉及到苹果安全的东西一般操作起来都将是慎之又慎的。

在用户之间的关系链被建立起来的基础之上,还需为其加固确保链条之间的稳固性 诸如:

1.用户之间是否为办公室同事或家庭成员(获取WiFi网络IP作为协助参数)
2.用户之间是否位于同一区域(获取地理坐标作为协助参数)
3.是否可以在H5页面上做文章已实现web端对设备的个性化采集更为丰富
...

在这诸多的条框之外还要有更多的额外需求:

而为了如何确保所有场景下都能打通;

而如何确定其稳定性及准确度;

而如何确保相同设备重复不断的安装恶意刷单等


故无感知记录关系链中最重要的核心是准确度。而要达到这种看似简单的逻辑下是需要经过一套复杂的算法来加持,能在H5页获取到该用户的信息越多,其在锁定用户的标准阈值越高,就会越准确。

现在市面上已经有一些比较成熟的三方SDK库来较好的实现需求,然而对于技术的追求应该是一种态度,学而不思则罔,即使做到尽可能准确也是对于技术瓶颈的突破。