本周苹果推出 iOS 27.2 正式版,苹果在该版本中为中国大陆用户带来新权限设置:运动与健身。该权限可以用来控制应用程序能否获得陀螺仪和加速度计参数,部分应用程序开屏摇一摇广告就通过检测传感器实现跳转。

但百度网盘 iOS 版在被关运动与健身权限后仍然可以继续跳转摇一摇广告,在此前的讨论中有网友猜测百度网盘可能并不需要检测陀螺仪和加速度计,而是设置随机延迟。只要到延迟时间就判断用户触发摇一摇并自动跳转广告。
AI 分析发现百度网盘还使用磁力计:
开发者 @王晨杰 使用 AI 分析百度网盘的开屏广告跳转逻辑并将最终报告分享给蓝点网。分析发现百度网盘使用的框架里有个专门的没有运动 (NoShake) 变体,这个变体没有依靠常规的 CoreMotion 动作监听,而是使用苹果 Core Location 框架中的 CLHeading 获取设备方向数据。
CLHeading 属于磁力计相关的框架,该框架可以提供设备相对于磁北方向的朝向和用于计算方向的三轴磁场数据。简单来说,手机姿态发生变化时磁力计返回的数据也可能随之变化,广告组件可以据此判断用户是否移动或转动了手机。
因此禁止陀螺仪和加速度计权限是没用的:
至少在百度网盘 iOS 版的案例中禁止百度网盘获取陀螺仪和加速度计权限是没用的,百度网盘已经准备好备用方法来检测手机是否移动或晃动。不过可能并非所有应用程序都如百度网盘这样还提前开发好替代框架。
iOS 27.2 测试版在 9 月 23 日发布,而此次开发者使用 AI 分析的样本是百度网盘 iOS 版 13.36.0 版,该版本于 10 月 22 日发布。当然这无法判断百度网盘是不是在 iOS 27.2 测试版发布后才新增 NoShake 变体用来应对传感器权限限制。
分析报告也确实提到无点击自动跳转的情况:
报告还提到一种零点击分支:当特定参数组合满足条件时,触发后会等待约 1 秒,如果期间用户没有点击,SDK 便自动执行广告点击流程。其他参数组合也可能在触发后直接进入点击流程。
这一机制为此前网友猜测的等待一段时间后自动跳转提供值得关注的线索,不过分析报告并未取得真实的广告响应,所以不能确定线上广告实际使用了哪组参数。