前几日一个朋友提到老板给出这样一个需求:A用户分享一个H5页面,B用户在第三方应用中或者浏览器中打开这个页面并进行APP下载,APP启动后需要知道是A分享的并对应给予A积分,同时B也成为A的下线成员,其实总结一句话就是用户安装APP后,APP启动能够获取并适配给该用户的个性化请求信息,即个性化安装。
所以说个性化安装的技术核心在于安装前后匹配的问题,匹配成功,就可以把安装前的个性化请求信息传递给安装后的APP
安卓在这方面没什么问题,可以给不同用户独立打包的方式来提供专用的APK包,所以说安卓可以完全匹配(眼红),iOS虽然也可利用企业证书签名,通过ad-hoc分发的方式,实时生成一个新的ipa文件,不过自iOS8开始,苹果对企业证书有了更严格的限制,用户体验不好
根据个人整理,觉得进行信息匹配大致有以下几种方法:
- 利用剪贴板--wap打开剪贴板有限制(天猫一激活就打开在他处copy的链接的启发)
- 方案:wap将匹配信息复制粘贴至剪贴板,后续app下载启动即去获取剪贴板上对应的匹配信息,完成匹配并删除剪贴板内容
- 不足:这个的问题在于wap不能直接访问剪贴板,需用户主动触发长按拷贝,虽可通过flash实现也有兼容性问题(clipboard.js iOS10开始OK)
- Safari Cookie互通--匹配度最高
- iOS11前方案:在iOS9-iOS10,Safari中访问url时,写入cookie等信息,后续app下载启动后使用SFSafariViewController访问同一域名,即可将之前写入的cookies带给服务端,服务端完成匹配
- iOS11后方案:iOS11取消了SFSafariViewControllercookie共享cookies的功能,官方说明: In iOS 9 and 10, it shares cookies and other website data with Safari,不过也给出了替代方案-使用SFAuthenticationSession
- 不足:条件是iOS9之前,而且譬如微信/新浪等推广较好的app打开网页目前并非使用SFSafariViewController,且iOS11使用SFAuthenticationSession会弹框提示用户授权,影响体验
- 设备唯一标识识别--互相获取不到对方较为有把握的标识(尴尬)
- 方案:wap在被打开时获取设备的唯一标识+其他信息给服务端,后续app下载启动也将设备的唯一标识发送给服务端,服务端完成匹配信息
- 不足:关键在于唯一标识的选择,必须app能获取,wap也能获取,这就有各种限制,所以一般选择将描述设备体征的信息(屏幕、系统、IP等等)的集合信息作为一个模糊信息匹配
- 话外:这里插一句,通过集成苹果的MDM可获取设备信息(UDID、Languages、DeviceID、BatteryLevel等)等很多信息,若只想获取UDID,那MDM就大材小用了(相当麻烦呀),简单点可通过苹果配置文件获取iOS设备UDID,用户在所有操作之前需完成.mobileconfig描述文件的安装,做不到无痕,使用麻烦(具体查阅Safari获取iOS设备UDID)
所以其实要实现信息匹配一般较少单一方式进行,一般都是几种方式合作(2-1-3)处理,对每一种方式的具体分析实践:
iOS 个性化安装的实践一 Safari Cookie互通
iOS 个性化安装的实践二 剪贴板
iOS 个性化安装的实践三 设备唯一标识
网友评论