uni-app android14 一打开app 默认弹通知授权弹窗

uni-app android14 一打开app 默认弹通知授权弹窗

操作步骤:

  • 安装 app后打开

预期结果:

  • 不会默认弹授权窗

实际结果:

  • 一打开就弹窗

bug描述:

  • 安装 app一打开就会申请通知权限,已经试过把所有的第三方包去掉了也依然会弹出来
  • android13的机型倒不会
项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 macOS 13.4.1 ©
HBuilderX类型 正式
HBuilderX版本号 3.99
手机系统 Android
手机系统版本号 Android 14
手机厂商 小米
手机机型 小米14或者小米k70
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX
App下载地址或H5网址 https://ide.dcloud.net.cn/build/download/e5dbff80-abb2-11ee-8227-3753c78e0480


更多关于uni-app android14 一打开app 默认弹通知授权弹窗的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

新系统特性吧 和ios一样

更多关于uni-app android14 一打开app 默认弹通知授权弹窗的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我的也是,试了别的APP就不弹

请问一下你的这个app首次打开启动速度是多少秒?

你好 你是怎么配置 然后安装 app后打开通知权限的弹框的

在 Android 14 及更高版本中,应用在首次启动时默认会弹出通知权限的请求弹窗。这是因为 Android 14 引入了更严格的通知权限管理,要求应用必须显式请求用户授予通知权限,才能发送通知。

对于使用 uni-app 开发的应用,如果你希望在 Android 14 上避免一打开应用就弹出通知权限请求弹窗,可以通过以下方式进行处理:

1. 延迟请求通知权限

你可以在应用启动后,延迟一段时间再请求通知权限,而不是在应用一启动就立即请求。这样可以避免用户在首次打开应用时立即看到权限请求弹窗。

// 在 App.vue 的 onLaunch 生命周期中处理
export default {
  onLaunch() {
    // 延迟 2 秒再请求通知权限
    setTimeout(() => {
      this.requestNotificationPermission();
    }, 2000);
  },
  methods: {
    requestNotificationPermission() {
      // 使用 uni-app 的 API 请求通知权限
      uni.getSystemInfo({
        success: (res) => {
          if (res.platform === 'android' && res.systemVersion >= 14) {
            uni.request({
              url: 'android.permission.POST_NOTIFICATIONS',
              success: (res) => {
                console.log('通知权限请求成功', res);
              },
              fail: (err) => {
                console.log('通知权限请求失败', err);
              }
            });
          }
        }
      });
    }
  }
}

2. 在合适的时机请求权限

你可以在用户执行某些操作(如点击按钮)时再请求通知权限,而不是在应用启动时立即请求。这样可以提高用户体验,避免用户在不了解应用功能的情况下被要求授予权限。

// 在某个按钮点击事件中请求通知权限
methods: {
  onButtonClick() {
    this.requestNotificationPermission();
  },
  requestNotificationPermission() {
    uni.getSystemInfo({
      success: (res) => {
        if (res.platform === 'android' && res.systemVersion >= 14) {
          uni.request({
            url: 'android.permission.POST_NOTIFICATIONS',
            success: (res) => {
              console.log('通知权限请求成功', res);
            },
            fail: (err) => {
              console.log('通知权限请求失败', err);
            }
          });
        }
      }
    });
  }
}

3. 使用原生插件处理权限请求

如果你需要更精细的控制,可以考虑使用原生插件来处理通知权限的请求。uni-app 支持通过原生插件扩展功能,你可以编写原生代码来处理 Android 14 的通知权限请求。

4. 在 manifest.json 中配置权限

确保在 manifest.json 中正确配置了通知权限:

{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "android.permission.POST_NOTIFICATIONS"
        ]
      }
    }
  }
}
回到顶部