Please enable JavaScript.
Coggle requires JavaScript to display documents.
实现方案 | 手Q统一下载 - Coggle Diagram
实现方案 | 手Q统一下载
实现方案
下载数据上报
迁移已有下载上报
业务梳理接入
旁路下载/推动接入❓
由运营推动,否则开发人力成本过大
下载框架
下载核心逻辑基于应用宝sdk:getSDKClient().startDownloadTask
支持apk url
支持appid方式(可能不用)
下载方式
预下载
使用代理类,包装一层,但会导致旧的预下载框架混乱❓
使用RockDownloader,仅补充上报
通用下载
增加代理层
又实现一个downloadManager❓
内部调用V2下载器,仅做代理层
管控安装
非新通道的安装apk,先上报,如何自动走到新通道❓
跟产品确认,做上报
监控方法:IATHandler.shellCheckAndDoSync
下载回调生成uuid,用于安装校验
方案讨论
异常场景
jsapi下载器,web接口
jairo预下载框架不用动,仅加上报
不想接入的业务,提供弹窗能力,安装上报
旧版本下载的apk,在新版本安装,可能需要记录下载时间
静默下载由manage配置业务白名单
管控能力实现
md5校验,避免业务修改安装逻辑
复用业务标识
下载的方法增加业务key
如果uuid的话,需要db存储,过期记录删除
跟rk、jairo讨论后
降低业务接入成本,尽量复用V2下载器
现有代码逻辑
下载业务名:com.tencent.mobileqq.bigbrother.Source
IPC还是多进程初始化一次?
完成demo页,接入真实下载功能
实现下载安装管控,对于不合理的场景,增加数据上报
梳理下载逻辑
下载器
哈雷
mHellyDownloader
获取方式:HalleyAgent.getDownloader
是应用宝sdk的一部分
可下载非apk文件
V2
新版本应用中心:DownloadManagerV2
逻辑基本从DownloadManager拷贝
应用宝sdk
TMAssistantDownloadClient
V1
DownloadManager
DownloadInfo
下载方式
文件信息
appid url 包名等
回调信息
下载进度、路径
startDownloadInternal
调用应用宝sdk下载
统一下载器
UniformDownloadMgr
通知展示、暂停下载
app下载最终调用了UniformDownloaderAppBabySdk,仍然是TMAssistantDownloadClient
预下载
PreDownloadScheduler/PreDownloadController
仅执行调度,使用AbsPreDownloadTask传递任务
真实下载:HttpEngineTask#realStart
目的:避免启动耗时
预下载框架
对外功能
请求下载
取消下载
成功/失败回调
路径名回调
标志位
业务名
部门名
内部功能
文件清理
切账号暂停
断网重连
下载上报类
DownloadInfoReport
借助了解下载过程