美文网首页
iOS 携带参数安装

iOS 携带参数安装

作者: 切一斤桃花卖酒钱 | 来源:发表于2020-03-10 18:28 被阅读0次

    需求描述

    市场部要求收集区分来自不同安装渠道的注册量,包括官网跳转,宣传页,和直接App Store 下载等多个渠道。

    需求分析

    要实现这个需求,就要知道用户是从哪个渠道跳转到 App Store 并且下载安装完成并注册成功。这样我们需要在下载前对当前用户做一个标记,用户经过一系列操作后在注册的时候再对比这个标记来确定这个注册的来源。

    需求实现

    接下来主要从以下几个不同思路来尝试实现:

    1. 苹果对开发者提供的 App Store Connect 来源分析

    登陆开发者 Connect 中心 --- App 分析 --- 来源分析,即可获取下载来源,主要统计包含:

    • “App Store 浏览”,“App Store 搜索”,“App 引荐来源”,“网页引荐来源”四大块的概览,数量,比例以及趋势。点击可单独查看具体来源以及更详细数据,比如“App 引荐来源”有微信,钉钉以及由其他 app 直接跳转来的数据,可以说很具体和殷实了。
    • “营销活动”: 通过设置营销活动的链接,当用户点击带有该链接的广告时,他们将被带到该 App 的 App Store 页面。会被针对性收集和统计,相当于自定义的来源统计。
      以上都无需额外操作,开发者中心为你提供了这些统计和数据。但是,此数据只可用来做下载统计,至于之后打开 app 以及 app 内部的操作则完全统计不到了。


      connect.png
    2.SFSafariViewController 共享 safari cookie

    我们一般是通过 Safari 来跳转到 App Store 下载应用,那么我们可以让营销链接设置cookie 并强制通过 Safari 来跳转到 App Store,然后在打开 app 后通过共享 cookie 来获取营销链接配置的参数。
    关于获取 safari cookie 的方案, 因为沙盒缘故第三方 app 无法直接获取 safari cookie, 所以需要通过 SFSafariViewController 这个内置类来联通我们的 app 与 safari 间接关系获取 cookie。

    实现思路:(因为一些方法的作废与新增,现测试并筛选后说明最新方案
    在用户打开 app 时调用 SFAuthenticationSession 方法访问 指定 url 会话,当前会话获取 cookie 并存储在 location.href 中,以 url 形式在 completionHandler 回调中返回。

    On completion, the service will send a callback URL with > an authentication token, and this URL will be passed to the app by SFAuthenticationCompletionHandler.
    The callback URL usually has a custom URL scheme. For the app to receive the callback URL, it needs to either register the custom URL scheme in its Info.plist, or set the scheme to callbackURLScheme argument in the initializer.

    public init(url URL: URL, callbackURLScheme: String?, completionHandler: @escaping SFAuthenticationSession.CompletionHandler) 
    

    方法限制:

    1. SFAuthenticationSession方法 iOS 11 +

    2. SFAuthenticationSession 方法需要用户授权提醒框允许获取 cookie 用作登陆

      alert.png
    3. 需要present SFSafariViewController(解决方案:弹出获取cookie后立即dismiss退出并销毁)


      auth.png

    方案2总结:
    由于苹果对于数据的谨慎(弹框授权)以及审核问题,pass 掉了很多取巧优化的方案(比如弹出 controller 是 alpha 设置为0 等等),故无法很好做到用户无感获取 cookie 的流程。
    但是,如果你要实现的是用户授权自动登录功能,则这不失为一个好的方案。方案没有好坏,取决于你要实现的功能。

    3. 配合服务器数据对比获取参数

    经过前面两个方案启发,想必大家也有个很多的注意,那么这里再说一个稍微麻烦点,但是更适配我们要实现注册统计需求的方案,也是我最终采取的方案。

    既然苹果可以统计下载的数据,那么让我们在其上再做进一步尝试。

    我们可以在点击营销链接跳转 App Store 的时候做一些事情,比如,获取当前用户 IP,设备信息,联网信息以及可以用来唯一标识当前用户的信息存储在服务端等待匹配使用。等待用户下载成功并在打开 app 的时候,首次获取必要信息与服务端的存储做对比,对比成功则标记为同一个用户,删除存储,并返回所需参数(或者无需返回参数,直接在服务端绑定渠道)

    如果觉得麻烦,以上思路已经有一些成熟的第三方工具:

    open install (同类型 share install)

    大致实现为: 配置好带参数的 url, 用户点击 url 时, 跳转到中间页(js app页)获取用户设备信息并跳转到 app 或者 appstore, 下载后再根据设备从服务端对比获取之前的参数。(需要和服务端核对)

    open install.png method.png

    优点:

    • 集成简单易用
    • 和我的需求很匹配

    缺点:一个字,这个功能属于收费功能, 8000 每年,更多见 open install

    神策

    神策也实现了类似的称为渠道追踪的功能,并且有简单的说明:

    对于 iOS 来说,由于 iOS10 的限制,App 通用渠道推广目前只能是模糊匹配,主要是基于 IP、Date、User Agent 构建的模糊匹配,匹配成功率在75%左右。

    track installation.png

    优缺点和上面类似,因为本来我们应用本来就用到神策统计,所以无需再次导入库,最终选择了神策。

    方案3总结:

    • 较好的匹配了注册传参的需求
    • 有较多实现好的第三方库提供参考或直接使用
    • 匹配率并不能达到 100% 完全匹配
    • 一些复杂操作可能导致中间环节出错
    • 不依赖第三方自己实现的话需要服务端做技术支持(能不求人尽量不求人🤦‍♂️)

    以上,因为一些限制,没有完美无缺的方案,但是,只要针对不同的需求,采取合适的方案,就能收获你想要的结果

    谢谢阅读(╹▽╹)

    参考

    SafariAutoLoginTest https://github.com/mackuba/SafariAutoLoginTest
    open install https://www.openinstall.io/track.html
    神策 https://manual.sensorsdata.cn/sa/latest/guide_channel_app-1573516.html
    iOS 渠道下载统计方案 https://www.jianshu.com/p/cbd6b5ad5655

    相关文章

      网友评论

          本文标题:iOS 携带参数安装

          本文链接:https://www.haomeiwen.com/subject/svlirhtx.html