原生隐私政策弹窗在杀掉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的权限弹窗可能先于隐私弹窗弹出。

针对这个问题,建议从以下几个方向解决:

  1. 检查manifest.json中的隐私政策配置,确保已正确启用原生弹窗并设置"delay"参数为true,延迟其他初始化流程。

  2. 在推送模块初始化代码中加入隐私状态判断,只有当用户同意隐私政策后才进行推送初始化:

// 在App.vue中
onLaunch() {
  if(plus.privacy.isAgreePrivacy()){
    // 初始化推送
    uniPush.init()
  }
}
  1. 对于小米等厂商设备,可能需要额外处理推送SDK的自动初始化。在AndroidManifest.xml中添加:
<meta-data
    android:name="com.xiaomi.mipush.sdk.autoinit"
    android:value="false" />
回到顶部