首页/新闻资讯/正文详情

《HarmonyOS 7 应用上架与隐私合规工程化》02:隐私同意之前,SDK 到底能不能先初始化【鸿蒙心迹】

发布时间:2026/9/23 17:18:03 来源:云帆数科 栏目:资讯中心
《HarmonyOS 7 应用上架与隐私合规工程化》02:隐私同意之前,SDK 到底能不能先初始化【鸿蒙心迹】
隐私弹窗还没弹出来统计 SDK 已经把设备信息发出去了。第一次做合规的时候以为隐私弹窗就是个 UI用户点了同意存个状态就完了。后来才发现不对用户还没点同意App 启动的时候统计 SDK、认证 SDK、云服务 SDK 都已经在 onCreate 里初始化了。设备信息、网络状态、唯一标识早就发出去了。隐私弹窗只是个摆设真正的数据早就传完了。一、先想清楚App 启动后前 1000ms 发生了什么把 App 启动后的前 1000ms 拆开看看时间发生了什么0-100msAbilityStage 初始化100-300msUIAbility onCreate300-500ms各个 SDK 初始化500-800ms隐私弹窗显示800-1000ms用户点同意/拒绝问题是SDK 在 300-500ms 就初始化了隐私弹窗 500ms 才显示。用户还没同意SDK 已经开始收集数据了。二、隐私同意状态为什么要真的控制初始化很多人以为隐私弹窗就是 UI用户点了同意存个 Preferences 就行。不对。隐私同意要真的控制 SDK 初始化。同意之前SDK 不能初始化同意之后再初始化。阶段做什么未同意最小启动只跑必要的代码刚同意延迟初始化所有 SDK已同意正常运行这段代码解决什么问题SDK 延迟初始化。文件entryability/EntryAbility.ets用途隐私同意控制接入位置Ability 启动import{PreferencesUtil}from./utils/PreferencesUtil;classEntryAbility{onCreate(){// 先检查隐私同意状态letconsentedPreferencesUtil.getConsentState();if(!consented){// 未同意只初始化最小启动this.initMinimal();this.showPrivacyDialog();}else{// 已同意正常初始化所有 SDKthis.initAllSDKs();}}onUserConsented(){// 用户同意后延迟初始化所有 SDKthis.initAllSDKs();PreferencesUtil.setConsentState(true);}}三、撤回同意以后怎么办还有个问题用户撤回同意怎么办很多人只考虑同意不考虑撤回。撤回以后SDK 还在运行数据还在收集。操作做什么同意初始化所有 SDK撤回停止 SDK释放资源四、几个容易踩的坑第一个坑在 onCreate() 里初始化所有 SDK。不管用户有没有同意先初始化了再说。第二个坑隐私弹窗只是 UI没有真正控制初始化。弹窗是摆设。第三个坑同意状态只存在内存。杀进程就忘了。第四个坑用户撤回后 SDK 继续运行。资源没释放。第五个坑多个 SDK 相互依赖导致初始化顺序混乱。A 依赖 BB 要等 A死锁了。第六个坑启动优化把合规检查绕过去。为了快跳过了同意检查。这次做合规初始化最大的体会是隐私合规不是加个弹窗是真的要控制数据收集的时机。真正做的时候最容易忽略的不是怎么写弹窗而是怎么管好启动顺序。用户同意之前哪些代码能跑、哪些不能跑每一步都要想清楚。

相关推荐

面试被问原理答不上来?四大喜事背后的性能优化实战
面试被问原理答不上来?四大喜事背后的性能优化实战

面试被问原理答不上来?四大喜事背后的性能优化实战 上周刚结束一场字节跳动的后端面试,候选人在白板前写了一段处理“四大喜事”数据聚合的代码。面试官只问了一句:“如果并发量上去,这里会有什么问题?”候选人愣了三秒,眼神开始飘忽,最后憋出一句“可… · 2026/9/23 17:17:56

5分钟搞定电脑DNS报错:保姆级教程拆解底层源码
5分钟搞定电脑DNS报错:保姆级教程拆解底层源码

5分钟搞定电脑DNS报错:保姆级教程拆解底层源码 屏幕上一堆红色的 StackTrace 报错,看着就头大?别慌。 很多开发者一遇到网络问题就重启路由器,其实根源可能在 DNS 解析层。 这篇保姆级教程,带你从源码层面看透电脑 DNS… · 2026/9/23 17:17:56

RDMA技术调研:从选型到性能调优的实战指南
RDMA技术调研:从选型到性能调优的实战指南

简介:这是一份面向网络与高性能计算方向学习者、研发人员的RDMA技术调研文档,系统梳理了远程直接内存访问的原理、协议与编程方法,适合希望理解数据中心高速网络底层机制、评估RDMA落地场景的读者。资源包内含1个PDF文件,整体约1.… · 2026/9/23 17:17:56

3个维度拆解手机充电桩:从协议到落地的实战项目选型指南
3个维度拆解手机充电桩:从协议到落地的实战项目选型指南

3个维度拆解手机充电桩:从协议到落地的实战项目选型指南 你是不是也卡在这里?Python语法背得滚瓜烂熟,LeetCode刷了几百道,但真让你做一个能跑起来的 实战项目 ,脑子里全是浆糊。… · 2026/9/23 17:53:53

水塔水位控制器手写实现优化:从卡顿到丝滑的实战复盘
水塔水位控制器手写实现优化:从卡顿到丝滑的实战复盘

水塔水位控制器手写实现优化:从卡顿到丝滑的实战复盘 很多刚入行嵌入式或者物联网开发的朋友,手里攥着《C语言程序设计》或者《Python编程:从入门到实践》,语法背得滚瓜烂熟,一碰到实际项目就傻眼。特别是做水塔水位控制器这种硬件逻辑时,发现代… · 2026/9/23 17:53:40

RecRecNet深度学习畸变矫正实战:推理、训练与部署指南
RecRecNet深度学习畸变矫正实战:推理、训练与部署指南

简介:基于RecRecNet深度网络实现广角图像畸变矫正,所附Python源码适用于高校计算机相关专业学生与教师,可支撑毕业设计、课程设计及初学进阶。压缩包共26个文件,主要包含py源码、C辅助工具、Shell脚本、Markdown说明与示例图片&am… · 2026/9/23 17:53:40

3个技巧搞定顶上性能优化,高频面试题全解析
3个技巧搞定顶上性能优化,高频面试题全解析

3个技巧搞定顶上性能优化,高频面试题全解析 版本升级后 API 全变了,代码跑不通、性能还卡顿,这是无数开发者深夜崩溃的真实写照。更扎心的是,当你试图修复时,发现连基本的性能瓶颈都定位不准。别慌,今天不聊虚的,直接拆解“顶上”这个看似简单却… · 2026/9/23 17:53:40

ASP.NET Boilerplate 迁移到 MySQL:EF6 与 ASP.NET MVC 5.x 完整集成指南
ASP.NET Boilerplate 迁移到 MySQL:EF6 与 ASP.NET MVC 5.x 完整集成指南

后端Web框架依赖注入认证鉴权 【免费下载链接】aspnetboilerplate ASP.NET Boilerplate - Web Application Framework 项目地址: https://gitcode.com/gh_mirrors/as/aspnetboilerplate 点击查看 免费下载 ASP.NET Boilerplate 的官方免费启动模板默认针对 SQL Ser… · 2026/9/23 17:53:33

阶乘算法核心:小T的魔法数字与末尾零计数法
阶乘算法核心:小T的魔法数字与末尾零计数法

开学第一周,ACM社团的新生群里就炸开了锅,好几个大一小朋友都在刷同一道题:ZZULIOJ 2871,题目名很唬人,叫“小T的魔法数字”,标签是“阶乘算法(大一水平)”。说实话,光看… · 2026/9/23 17:53:27

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码