个推移动研发部研发主管吕观祥——如何开发一款优雅的 SDK

2020-02-27 119浏览

  • 1.如何开发一款优雅的 SDK 个推 : 吕观祥 2016 年 9 月 24 日
  • 2.背景  为企业和开发者提供消息推送技术服务  提供 Android 和 iOS 推送 SDK  支持 WEB 及服务器端推送 API 接入  使 APP 快速集成云推送功能,免去开发成本  有效提高产品活跃度与用户体验
  • 3.背景 实时推送 智能推送 应景推送 强大技术支撑 推送实时高效触达 智能匹配 数据驱动,高效运营 利用 LBS 围栏技术 实时触发消息通知
  • 4.背景 合适的时间 合适的地点 合适的场景 合适的内容 合适的人 定时推送 地理围栏 智能场景 标签 有价信息 智能画像 标签
  • 5.背景 个推所占第三方推送市场份额 90% 个推 其他 • SDK 累积安装覆盖量超过 108 亿,覆盖超过 10 亿终端(含海外),已 接入应用 43 万,开发者 22 万,日活用户近 7.5 亿,同时在线 3.5 亿。
  • 6.目录 开发 CI 发布 其他
  • 7.开发 CI 发布 其他 开发 架构 API 设计 兼容性 安全 性能指标 分支管理
  • 8.开发 架构设计 -- APP CI View Controller Model Model-View-Controller 发布 其他 View Presenter Model Model-View-Presenter
  • 9.开发 架构设计 -- APP CI 发布 其他
  • 10.开发 架构设计 -- SDK CI API Business core 发布 其他 API Business Core
  • 11.开发 架构设计 -- SDK CI 发布 其他 API 参数解析 信息获取 事件驱动 逻辑处理 界c面ore Business 事 件 总 Network DB Storage 线 ConfigCenter Security Entities 任务调度 Core
  • 12.开发 接口设计 易用性 : • 接入简单 • 可自解释 • 可定制 • 防止误用 CI 发布 其他
  • 13.开发 CI 接口设计 稳定性 : • 生命周期 • 弃用( @Deprecated ) • 扩展 • 异常处理 发布 其他
  • 14.兼容性 开发 CI 发布 其他 Android Api Rom 版本 兼容 so 版本 SDK 版本
  • 15.开发 CI 安全性 -- 本地数据安全 范围 1 storage 2 shared preference 3 db 4 resource 5 memory 6… 发布 其他 实施 : • JNI • 加密 • 内存数据处理
  • 16.开发 CI 安全性 -- 通信数据安全 明文 发布 其他 中间人攻击 实施 : • HTTPS • ECDHE-AES-GCM
  • 17.开发 性能指标 电量 & 流量 • 批处理请求 • 优化协议 • 压缩数据 • 心跳优化处理 • WakeLock & WifiLock CI 发布 其他 内存 • 多进程处理 • 优化图片使用 包大小 • 精简 resource / code • raw/keep.xml
  • 18.开发 分支管理 CI 分支来源 : • 官网 sdk 包 • 应用定制包、 rom 定制包 注意事项 : • 多版本维护 • 人员 发布 其他
  • 19.开发 CI 发布 其他 CR CI Build Test
  • 20.开发 Code Review 特点 : • 需求多分支兼容 • Bug Fix 工具 : CI 发布 其他
  • 21.开发 BUILD CI 发布 特点 : • 多 demo 打包(包含不同配置的 demo 包) • 提供 apk 和 jar , aar 包供测试需求 其他
  • 22.开发 测试 特点 : • 自动化测试 • 人工测试 CI 发布 其他
  • 23.开发 CI 发布 其他 发布 灰度 配置中心 发布包管理
  • 24.开发 灰度发布 用户选择 : • 测试 app 选择 • 目标用户选择 CI 发布 其他
  • 25.开发 灰度发布 CI 工具 : • Logful • Android/iOS 支持 • 日志加密存储和上传 • 日志检索 • 实时日志控制 • Crash 捕获 • 数据监控,报警 发布 其他
  • 26.开发 灰度发布 CI 延时数据监控 发布 其他 报警通知
  • 27.开发 CI 灰度发布 Crash 趋势 发布 其他 Crash 详情
  • 28.开发 配置中心 多维度配置 CI LOG 城市 版本 应用 厂商 网络 Rom 发布 其他
  • 29.开发 发布包管理 Binary 打包 : • 提供 aar 包 • 多种构建工具的支持 • Maven • Jcenter • 私有仓库 CI 发布 其他
  • 30.开发 发布包管理 CI 内容管理 : • 更新日志 • Sample 工程代码 • Demo APK • 文档 • Jar , aar 下载,接入方 式 • 社区支持 发布 其他
  • 31.开发 CI 发布 其他 其他 第三方 jar 包 低污染 全平台支持
  • 32.开发 其他 第三方 jar 包 : • 使用冲突问题 • Classpath 检测 CI 低污染: • 及时清理运行过程中创建的临时文件 发布 全平台支持 : • Cocos2dx , unity3d , APICloud , PhoneGap 等等 其他
  • 33.总结 易稳灵用定活
  • 34.Thanks ! @ 个推 @xiangzilv