原生隐私政策弹窗在杀掉app重启状态下不能阻止发送通知弹窗申请授权
原生隐私政策弹窗在杀掉app重启状态下不能阻止发送通知弹窗申请授权
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win11 | HBuilderX |
Android | Android 14 | 小米 |
红米12tub |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:4.44
手机系统:Android
手机系统版本号:Android 14
手机厂商:小米
手机机型:红米12tub
页面类型:vue
vue版本:vue2
打包方式:云端
操作步骤:
- 使用原生隐私弹窗,设置用户不同意进入disagree模式,设置用户不同意每次启动弹出隐私设置弹窗。
- 在原生隐私政策弹窗中两次点击不同意,进入disagree模式
- 杀掉app重新启动
预期结果:
- 和第一次打开一样,只会出现原生隐私政策弹窗,其他权限申请弹窗不出来
实际结果:
- 发送通知申请弹窗比原生隐私政策弹窗还要早弹出
bug描述: uniapp集成unipush。安卓端在使用原生隐私政策弹窗时,如果点击两次拒绝后进入disagree模式,这个时候杀掉app重新启动,发送通知弹窗会比原生隐私政策弹窗还要早出来。
1 回复
这是一个已知的uni-app原生隐私政策弹窗与推送权限弹窗的时序问题。在Android平台上,当应用启动时,系统会并行处理多个初始化流程,导致推送SDK的权限弹窗可能先于隐私弹窗弹出。
针对这个问题,建议从以下几个方向解决:
-
检查manifest.json中的隐私政策配置,确保已正确启用原生弹窗并设置
"delay"
参数为true,延迟其他初始化流程。 -
在推送模块初始化代码中加入隐私状态判断,只有当用户同意隐私政策后才进行推送初始化:
// 在App.vue中
onLaunch() {
if(plus.privacy.isAgreePrivacy()){
// 初始化推送
uniPush.init()
}
}
- 对于小米等厂商设备,可能需要额外处理推送SDK的自动初始化。在AndroidManifest.xml中添加:
<meta-data
android:name="com.xiaomi.mipush.sdk.autoinit"
android:value="false" />