| 作者 |
| 王灼洲 |
| 丛书名 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782005181026 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------iOS全埋点解决方案--------------------------- 内容简介 本书从实战角度全面讲解了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等场景的全埋点技术和解决方案。 所有的解决方案都提供了完整的项目源代码,具有极强的实操性。 ---------------------------Android全埋点解决方案--------------------------- 内容简介 . 这是一本实战为导向的、翔实的Android全埋点技术与解决方案手册,是国内知名大数据公司神策数据在该领域多年实践经验的总结。由神策数据合肥研发中心负责人亲自执笔,他在Android领域有近10年研发经验,开发和维护着知名的商用开源 Android & iOS 数据埋点SDK。 本书详细阐述了 Android 全埋点的8种解决方案,涵盖各种场景,从0到1详解技术原理和实现步骤,并且提供完整的源代码,各级研发工程师均可借此实现全埋点数据采集,为市场解开全埋点的神秘面纱。 8种Android全埋点解决方案包括: $AppClick 全埋点方案1:代理 View.OnClickListener、 $AppClick 全埋点方案2:代理 Window.Callback $AppClick 全埋点方案3:代理 View.AccessibilityDelegate $AppClick 全埋点方案4:透明层 $AppClick 全埋点方案5:AspectJ $AppClick 全埋点方案6:ASM $AppClick 全埋点方案7:Javassist $AppClick 全埋点方案8::AST |
| 目录 |
---------------------------iOS全埋点解决方案--------------------------- 推荐序 前言 第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 ---------------------------Android全埋点解决方案--------------------------- 推荐序 前言 第1章 全埋点概述1 1.1 Android View 类型3 1.2 View 绑定listener 方式7 第2章 $AppViewScreen全埋点方案10 2.1 关键技术Application.Activity LifecycleCallbacks10 2.2原理概述11 2.3 案例12 2.4 完善方案24 2.5 扩展采集能力30 第3章 $AppStart、$AppEnd全埋点方案33 3.1 原理概述34 3.2 案例35 3.3 缺点46 第4章 $AppClick全埋点方案1:代理View.OnClickListener47 4.1 关键技术47 4.2 原理概述48 4.3 案例49 4.4 引入DecorView62 4.5 引入ViewTreeObserver.OnGlobalLayoutListener64 4.6 扩展采集能力67 4.7 缺点91 第5章 $AppClick 全埋点方案2:代理Window.Callback92 5.1 关键技术92 5.2 原理概述93 5.3 案例93 5.4 扩展采集能力101 5.5 缺点111 第6章 $AppClick 全埋点方案3:代理View.AccessibilityDelegate112 6.1 关键技术112 6.1.1 Accessibility112 6.1.2 View.AccessibilityDelegate113 6.2 原理概述114 6.3 案例114 6.4 扩展采集能力122 6.5 缺点129 第7章 $AppClick全埋点方案4:透明层130 7.1 原理概述130 7.1.1 View onTouchEvent130 7.1.2 原理概述130 7.2 案例131 7.3 扩展采集能力139 7.4 缺点145 第8章 $AppClick全埋点方案5:AspectJ146 8.1 关键技术146 8.1.1 AOP146 8.1.2 AspectJ148 8.1.3 AspectJ 注解148 8.1.4 切点表达式151 8.1.5 JoinPoint153 8.1.6 call与execution区别155 8.1.7 AspectJ 使用方法157 8.1.8 通过Gradle 配置使用 AspectJ157 8.1.9 自定义Gradle Plugin162 8.1.10 发布 Gradle 插件165 8.1.11 使用 Gradle Plugin167 8.1.12 Plugin Project168 8.2 原理概述171 8.3 案例171 8.4 完善方案193 8.5 扩展采集能力196 8.6 缺点202 第9章 $AppClick全埋点方案6:ASM203 9.1 关键技术203 9.1.1 Gradle Transform203 9.1.2 Gradle Transform 实例207 9.1.3 ASM213 9.2 原理概述220 9.3 案例220 9.4 完善240 9.5 扩展采集能力241 9.6 缺点250 第10章 $AppClick全埋点方案7:Javassist251 10.1 关键技术251 10.1.1 Javassist251 10.1.2 Javassist基础251 10.2 原理概述255 10.3 案例255 10.4 扩展采集能力272 第11章 $AppClick全埋点方案8:AST280 11.1 关键技术280 11.1.1 APT280 11.1.2 Element280 11.1.3 APT实例282 11.1.4 javapoet293 11.1.5 AST295 11.2 原理概述295 11.3 案例295 11.4 完善方案306 11.5 扩展采集能力308 11.6 缺点317 |