整理一下我在负责面向国内市场的项目时遇到的关于合规隐私检查的坑,方便自己也惠及他人吧!
不得不说国内应用市场上架的门槛是真的高,而且各个应用市场的标准不一、开发者后台的友好性不一,导致上架应用时常常不知道因为什么原因就被拒了,一通分析被拒原因再紧急开一个小迭代来进行整改并重新上架,中间不知道要损失多少的下载量。
- 关于应用权限申请情况:
-
如果要申请高危权限(例如通讯录、调起摄像头、获取精确定位等在API23及以上的手机上需要动态申请的权限),必须要在应用提供某项服务,即将调用该权限的时候才能申请,而不能在应用首次启动时就一股脑地申请。同时申请权限的时候最好也显示APP对权限的用途说明,比较好的办法有:
- 在系统弹出权限申请弹窗时同时在界面上方显示一个简洁的说明悬浮框;
- 在调用requestPermissions()前先弹一个弹窗告知用户接下来我们需要申请的权限以及用途。
-
要申请任何权限(在manifest里声明过的权限,或者你引入的SDK在它的manifest里声明过的权限),都需要在隐私政策中说明
- 申请权限名
- 权限用途
- 为何这个权限是必须申请的(可选)
如果是第三方SDK需要使用的权限,也要说明申请对应权限的SDK的用途、提供给用户的服务,同时提供对应SDK的隐私政策链接(如果有的话)。
-
如果申请了某个权限,但是APP内没有代码或者SDK有使用这个权限的行为的话,会被应用审核员判断为过度申请权限,所以要用tools:node="remove"移除掉SDK或者其他模块申请的无用权限。
-
这也是最多开发者容易犯错的一点:在用户同意隐私政策之前,APP不能读取用户的隐私信息、手机信息、进程信息等,部分SDK可能会因为这个违反应用上架标准(比如有的SDK会在APP启动就尝试获取设备的定位、或者读取手机的各种参数、甚至是传感器信息),这时候最好的解决办法就是去根据SDK类型逐个排查是否有这个嫌疑,然后去SDK下载网站看看有没有官方推出的应用时长合规版本,升级SDK之后再根据教程延迟初始化就可以解决了。如果是定制的SDK或者长久不维护的SDK,那就需要手动做SDK的延迟初始化,在用户同意隐私协议之后再调用初始化函数。
- 关于隐私政策:
- 首先,确保你的应用有这玩意,其次,确保你附上的链接是可以打开的
- 如果用户不同意隐私政策,那就直接退出APP,如果只是弹toast提示用户需要同意协议但是界面没有其他变化的话,可能会因为这个被审核拒绝(比如华为应用市场)
- 登录和注册时页必须要让用户知道用户协议和隐私政策,并且要在用户同意之后才能进行下一步,同意的勾选框不能默认选中,也不能做那种“登录或注册即表示您同意了我们的隐私政策balabala”的逻辑。这一条各个应用市场的审核力度是不一样的,有的审核员不会去抠这个不代表这一套能在所有应用市场吃得透。
- 国内应用市场要求APP在内部提供允许关闭个性化/定向化推送的开关,如果APP有针对用户的推送功能的话,这个是必要的
- 很多应用市场需要你的应用有
《计算机软件著作权》
,比如应用宝、华为应用市场、OPPO应用市场等等。但这玩意吧,第一我没自己去申请过;第二这申请也得你有代码才能上交给别人审,所以确实挺耽搁时间的。