iOS HackeriOS进阶乐Coding

iOS App与浏览器深度链接

2017-08-11  本文已影响419人  乐Coding

概念介绍

1.深度链接(Deep Linking)

深度链接即通过手机浏览器或者微信、QQ等第三方WebView启动自己原生应用,进而跳转到指定页面或者处理指定逻辑。

2.延迟深度链接(Deferred Deep Linking)

Deferred Deep Linking是指用户点击Web跳转到App的时候,手机并没有安装该App。我们希望用户安装完之后可以Deep link到相应内容,或者标记改用户为某个渠道过来的用户。

使用场景

deep-link.jpg deferred-deep-link.jpg

解决方案

深度链接iOS中一般使用自定义URL SchemeUniversal links(iOS 9开始引入)实现。已经有完美解决方案,我们在这里不做介绍。下面主要介绍延迟深度链接解决方案。

延迟深度链接需要解决的问题

  1. 点击web页面判断是否安装App,如果安装走Deep linking流程,如果未安装去重定向到App Store下载链接。
  2. 用户下载第一次启动,用户匹配,如何定位是从Web引流过来的。
  3. Deep Linking

实现方案

解决问题的关键是如何在用户不登录的情况下获得用户的唯一标示,因为iOS系统限制,js无法获得系统的唯一标示,这就需要我们自己来创建。

1. 通过剪切板
NSString *str = [[UIPasteboard generalPasteboard] string]
2. 生成设备不完美唯一标示

通过js和app分别采用相同的参数Hash出来一个相同规则的唯一标示,上传到服务器,由服务器模糊匹配在一定时间间隔内是否是该用户操作。

为什么说他是不完美唯一标示呢?

我们采用的生成规则是根据屏幕尺寸、操作系统版本和外网IP生成一个并不唯一的唯一标示。这样存在的问题就是相同设备在同一个wifi环境下可能存在误伤。同一设备IP也可能变化。所以后台要有一个时间限制,比如10分钟后拍配到的就当做无效激活。

存在误伤,随着用户量增加误伤增加。

3. SFSafariViewController Cookie互通方案

iOS9以上可以使用SFSafariViewController共享Cookie的方式获取。

优点:精准,不会误伤

缺点:

实现思路:

4. 集成第三方SDK

现有方案有:

  1. https://branch.io/
  2. https://www.appsflyer.com/
  3. 友盟 http://dev.umeng.com/gxb/apptrack#2_2

前两种是国外产品,可能不稳定。友盟采用的方式就是介绍的第2中方案。

自己实现建议采用1、2两种方式结合的方案,不建议采用3方案,因为限制太多且不稳定

参考文章

https://stackoverflow.com/questions/25855618/deferred-deep-linking-in-ios
http://blogs.innovationm.com/deferred-deep-linking-in-ios-with-universal-link/


更多iOS、Swift、iOS逆向最新文章请关注微信公众账号:乐Coding,或者微信扫描下方二维码关注

lecoding

icon.jpg

上一篇下一篇

猜你喜欢

热点阅读