首页>参考读物>计算机科学与技术>软件与程序设计

iOS全埋点解决方案
作者 : 王灼洲 著
出版日期 : 2020-04-29
ISBN : 978-7-111-65362-2
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 311
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容简介
本书从实战角度全面讲解了iOS全埋点技术和解决方案,为基于iOS系统的各种数据采集场景提供详尽的指导。
本书由神策数据官方出品,总结了他们过去为1000余家企业客户提供服务的实践经验。执笔人是神策数据合肥研发中心负责人,在Android & iOS等领域有10年的研发经验,对各种数据采集技术和解决方案都有深入研究,开发和维护着国内第一个商用的开源 Android & iOS 数据埋点 SDK。
全书一共14章:
第1~2章介绍了数据采集SDK框架的搭建,以及应用程序的退出和启动,这是实现iOS全埋点的基础;
第3~6章依次详细讲解了页面浏览事件、控件点击事件、UITableView和UICollection View点击事件、手势采集等场景的全埋点技术和解决方案;
第7~14章分别讲解了用户标识、时间相关、数据存储、数据同步、采集崩溃、App 与 H5 打通、App Extension React Native等场景的全埋点技术和解决方案。
所有的解决方案都提供了完整的项目源代码,具有极强的实操性。

图书特色

国内知名大数据公司神策数据出品
作者是神策数据合肥研发中心负责人,有近10年 Android & iOS 开发
经验,开发和维护着知名商用开源 Android & iOS 数据埋点 SDK
1000 余家企业客户服务经验总结,全面讲解 iOS 数据埋点技术
和解决方案,提供完整项目源码

图书前言

为何写作本书?
随着大数据行业的快速发展,数据采集也变得越来越重要。国内企业对全埋点技术需求迫切,但是这方面的学习资源一直比较缺乏。目前,国内外还没有系统讲解iOS全埋点技术的专著。同时,行业里存在对全埋点概念过度包装的现象,希望本书能够揭开iOS全埋点技术的神秘面纱,给企业带来价值,推动更多开发者参与大数据行业生态建设。
自第一本书—《Android全埋点解决方案》出版以来,我收到了许多读者朋友的反馈,有的与我分享他们的阅读感悟,有的与我探讨具体的技术问题,有的说这本书改变了他们的职业生涯,也有人给我邮寄了锦旗……不仅收获了好的口碑,而且获得了不错的销售成绩。这一切让我感觉到,这些年在埋点技术道路上付出的所有艰辛和努力都是值得的。
我目前就职于神策数据,是神策数据合肥研发中心负责人。神策数据是一家以重构中国互联网数据根基为愿景的公司,十分重视基础数据的采集与建模。神策数据的采集技术一直在不断革新,包括 Android SDK、iOS SDK、Web JS SDK 、C++ SDK、C# SDK、Java SDK、Python SDK、PHP SDK、Ruby SDK、Golang SDK、Node SDK、APICloud SDK等。神策数据愿意将一些成熟的技术与国内外开发者交流与共享,并已于2019年1月正式成立供 IT 开发者分享、使用与交流技术的开源社区—神策数据开源社区(Sensors Data Open Source)。开源社区一方面能够帮助我们更好地服务客户,推动企业的数字化转型;另一方面能够造福同行,推动数据行业生态建设。同时,我们也期待在开源社区(http://opensource.sensorsdata.cn/)能够就数据采集相关技术与读者有更多的交流和共享。
本书读者对象
本书适合各水平层次的iOS开发工程师、系统工程师、架构师,以及项目经理和技术经理等阅读。
本书内容特色
1.内容稀缺
数据埋点技术在互联网领域尤其是移动端使用非常普遍,全埋点被誉为“最全、最便捷、界面友好、技术门槛低”的数据采集方式。关注该技术的企业很多,但是图书市场目前还是空白。
2.实战经验总结
作者从事移动开发近10年,开发和维护着国内第一个商用的开源Android & iOS数据埋点SDK,在神策数据深度服务超过1000家企业客户,有比较丰富的技术沉淀与经验积累—这些都毫无保留地写在了本书中。
3.理论与实操并重
本书全面、系统地讲解了基于iOS平台的数据埋点技术和解决方案,包括iOS应用程序启动和退出、页面浏览、控件点击、手势等全埋点的实现原理,并且都提供了完整的项目源码,具有极强的理论性和实操性。
如何阅读本书
本书系统地讲解了iOS全埋点的解决方案,同时涵盖了用户标识、时间相关、数据存储、数据同步、采集崩溃、App与H5打通、React Native全埋点等内容,建议大家按照书中的章节顺序阅读,由浅入深、循序渐进。
此外,本书还提供了完整的项目源码,建议一边阅读,一边实操。
勘误和支持
由于作者水平有限,且编写时间仓促,同时技术也在不断更新和迭代,书中难免会出现一些错误或者表述不准确的地方,恳请读者朋友批评和指正。
本书附赠源码的获取方式:关注微信公众号“华章计算机”,回复“65362”即可。
更多关于华章图书的信息和活动福利,请关注华章的官方新浪微博“华章图书”。
致谢
感谢神策数据的创始人桑文锋、曹犟、付力力、刘耀洲等在工作中的指导和帮助,感谢神策数据开源社区中每一位充满活力和共享精神的朋友们。
感谢机械工业出版社华章分社的编辑杨福川老师,在半年多的时间里始终支持我的写作,鼓励、帮助、引导我顺利完成全部书稿。同时,也非常感谢神策数据iOS工程师张敏超辅助完成本书写作。
谨以此书献给大数据行业的关注者和建设者!

王灼洲
2020年2月

上架指导

计算机\移动开发

封底文字

曹 犟
神策数据
联合创始人 & CTO
灼洲以及他所带领的 SDK 团队,一直负责神策数据客户端与服务端数据采集 SDK 的研发工作,不仅为客户设计完整的数据采集方案,而且解决客户在数据采集过程中碰到的各种疑难问题。在这个过程中,灼洲团队积累了丰富的经验,而且通过开源数据采集 SDK、持续举办各种技术沙龙等方式,为整个数据采集技术社区做出了一些贡献。
希望本书能够给读者们讲明白 iOS 全埋点这一看起来有点像“黑科技”的技术方案的实现细节,讲透各种实现方式的优缺点。希望读者们在读了本书之后,能够对数据采集有更深入的认识,能够结合自己的实际业务场景,设计出更好的数据采集方案。

Shopee
用户行为分析数据
采集团队
继《Android 全埋点解决方案》之后,惊喜地看到神策技术团队又撰写了这本基于iOS 系统的全埋点著作。神策技术团队将自己多年来在数据采集领域的实践经验再一次毫无保留地与开发者们分享,让同行们可以少走弯路。本书依据 iOS 平台上用户与应用程序交互的不同方式,不仅全面细致地给出了各个场景下全埋点技术的应用和实现,而且涵盖了 SDK 数据缓存和发送策略等解决方案,干货满满。通过各种方案的选择和比较,再结合自己的业务需求,相信大家能在书中找到满意的答案。

作者简介

王灼洲 著:作者简介
王灼洲
资深Android开发工程师,有近10年Android 相关开发经验,国内第一批Android研发工程师,开发和维护着国内第一个商用的开源 Android & iOS 数据埋点 SDK。
目前就职于神策网络科技(北京)有限公司公司,担任合肥研发中心负责人,是神策数据最早核心骨干员工。2009~2016就职于北京天宇朗通通信设备股份有限公司公司新产品部,担任 Android 系统工程师。
神策数据
神策数据是专业的大数据分析平台服务提供商,致力于帮助客户实现数据驱动。围绕用户级大数据分析和管理需求,推出神策分析、神策客景、神策自动化运营、神策智能推荐等产品。目前积累了中国银联、中国电信、百度视频、百联、万达、小米、广发证券等 600 余家付费企业用户的服务和客户成功经验,为客户全面提供指标梳理、数据模型搭建等专业的咨询、实施和技术支持服务。

推荐序

大部分互联网行业的从业人员可能都比较熟悉埋点这个概念,即通过嵌入第一方或者第三方 SDK,采集用户在产品上的操作,也就是采集用户的行为数据。埋点一般可以分为客户端埋点和后端埋点。客户端埋点由于更加贴近业务,更加直观,因此成为目前市面上的主流数据采集手段。其中,Android与iOS端的埋点更是得到了广泛应用。对于iOS端的埋点,目前市面上主要流行代码埋点与全埋点两种技术方案。其中,代码埋点即显式地调用数据采集SDK提供的接口来采集数据,在采集能力上有比较大的优势,但是需要做额外的开发,易用性较为欠缺;全埋点则不需要额外写代码,使用方便快捷,但是在采集能力上有所欠缺,并且存在比较多的兼容性问题。两种方案说不上孰优孰劣,各自有适用的应用场景。根据服务客户所积累的最佳实践,我们推崇两种方案综合使用。
灼洲以及他所负责的SDK团队,在公司内部一直负责客户端与服务端的数据采集SDK的研发工作,不仅为客户提供了完整的数据采集方案,而且解决了客户在数据采集过程中碰到的各种疑难问题。在整个研发与服务客户的过程中,灼洲团队积累了丰富的经验,并且通过开源数据采集SDK、持续举办各种技术沙龙,为整个数据采集的技术社区做出了一些贡献。在这个过程中,团队也希望能够通过这本书的出版,给读者讲明白“iOS全埋点”这一之前看起来有点像“黑科技”的技术方案的实现细节,以及各种实现方式的优缺点。同时,也希望读者在读了本书之后,能够对数据采集有更多的认识,能够结合自己的实际业务场景,设计出更好的数据采集方案。

曹犟
神策数据联合创始人、CTO

图书目录

推荐序
前言
第1章 数据采集SDK1
1.1 数据采集SDK简介1
1.2 搭建SDK框架3
1.2.1 新建Cocoa Touch Framework3
1.2.2 新建Workspace4
1.2.3 新建Demo工程7
1.2.4 添加依赖关系10
1.2.5 编写埋点SDK10
1.2.6 Demo集成埋点SDK18
第2章 应用程序退出和启动20
2.1 全埋点简介20
2.2 应用程序退出21
2.2.1 应用程序状态21
2.2.2 实现步骤22
2.3 应用程序启动24
2.3.1 实现步骤24
2.3.2 优化26
2.4 被动启动28
2.4.1 Background Modes29
2.4.2 实现步骤30
2.4.3 优化33
第3章 页面浏览事件36
3.1 UIViewController 生命周期36
3.2 Method Swizzling37
3.2.1 Method Swizzling基础37
3.2.2 实现Method Swizzling的相关函数39
3.2.3 实现Method Swizzling40
3.3 实现页面浏览事件全埋点42
3.3.1 实现步骤42
3.3.2 优化45
3.3.3 扩展48
3.3.4 遗留问题52
第4章 控件点击事件53
4.1 Target-Action53
4.2 方案一54
4.2.1 实现步骤55
4.2.2 优化$AppClick事件57
4.2.3 支持更多控件65
4.3 方案二70
4.3.1 实现步骤70
4.3.2 支持更多控件75
4.4 方案总结78
第5章 UITableView和UICollection-View点击事件80
5.1 支持UITableView控件80
5.1.1 方案一:方法交换80
5.1.2 方案二:动态子类86
5.1.3 方案三:消息转发93
5.1.4 三种方案的总结102
5.1.5 优化103
5.2 支持UICollectionView控件107
第6章 手势采集112
6.1 手势识别器112
6.2 手势全埋点114
6.2.1 UITapGestureRecognizer全埋点114
6.2.2 UILongPressGestureRecognizer全埋点118
第7章 用户标识121
7.1 登录之前122
7.1.1 UDID122
7.1.2 UUID125
7.1.3 MAC地址126
7.1.4 IDFA128
7.1.5 IDFV129
7.1.6 IMEI130
7.1.7 最佳实践130
7.2 登录之后140
第8章 时间相关144
8.1 事件发生的时间戳145
8.2 统计事件持续时长147
8.2.1 实现步骤147
8.2.2 事件的暂停和恢复152
8.2.3 后台状态下的事件时长155
8.3 全埋点事件时长158
8.3.1 $AppEnd事件时长158
8.3.2 $AppViewScreen 事件时长160
第9章 数据存储162
9.1 数据存储策略162
9.1.1 沙盒163
9.1.2 数据缓存165
9.2 文件缓存166
9.2.1 实现步骤166
9.2.2 优化174
9.2.3 总结179
9.3 数据库缓存179
9.3.1 实现步骤179
9.3.2 优化190
9.3.3 总结197
第10章 数据同步198
10.1 同步数据198
10.1.1 Foundation简介198
10.1.2 同步数据202
10.2 数据同步策略212
10.2.1 基本原则212
10.2.2 策略一214
10.2.3 策略二215
10.2.4 策略三220
第11章 采集崩溃223
11.1 NSException异常223
11.1.1 捕获NSException 异常224
11.1.2 传递UncaughtException-Handler227
11.2 捕获信号229
11.2.1 Mach 异常和Unix 信号230
11.2.2 捕获Unix信号异常231
11.3 采集应用程序异常时的$AppEnd事件235
第12章 App与H5打通238
12.1 App与H5打通原因238
12.2 方案一:拦截请求239
12.2.1 修改UserAgent239
12.2.2 是否拦截243
12.2.3 二次加工H5事件244
12.2.4 拦截246
12.2.5 测试验证247
12.3 方案二:JavaScript与WebView相互调用255
第13章 App Extension259
13.1 App Extension介绍259
13.1.1 App Extension类型259
13.1.2 App Extension 生命周期261
13.1.3 App Extension通信261
13.1.4 App Extension示例262
13.2 App Extension埋点270
第14章 React Native全埋点283
14.1 React Native 简介283
14.1.1 创建项目283
14.1.2 基础控件286
14.2 React Native全埋点293
14.2.1 事件响应293
14.2.2 $AppClick 事件295

教学资源推荐
作者: (美)Dennis Kafura
作者: John R.Hubbard
作者: (美)Byron S.Gottfried
作者: Stuart Reges;Marty Stepp
参考读物推荐
作者: Dharma Shukla;Bob Schmidt
作者: 杨洁 郭占鑫 刘康 熊谱翔 著