uniapp createpushmessage:fail notificationauthorized: denied 如何解决?

在uniapp开发中遇到"createpushmessage:fail notificationauthorized: denied"错误,推送消息功能无法使用。请问这个权限被拒绝的问题该如何解决?已经尝试过检查manifest.json中的权限配置,但问题依然存在。需要具体说明在Android和iOS平台分别需要哪些额外设置?是否有完整的权限申请流程示例?

2 回复

这个错误是因为用户未授权通知权限。解决方法:

  1. 检查手机系统设置,开启应用的通知权限
  2. 在App中调用uni.authorize提前请求通知权限
  3. 引导用户手动开启:设置-应用管理-你的应用-通知管理

首次使用建议先调用uni.requestSubscribeMessage获取用户授权。


这个错误表示用户未授权通知权限,导致推送消息失败。以下是解决方案:

1. 检查系统通知权限设置

  • iOS:进入「设置」 > 「通知」 > 找到您的应用 > 开启「允许通知」
  • Android:进入「设置」 > 「应用和通知」 > 找到您的应用 > 「通知」 > 开启「允许通知」

2. UniApp代码中主动请求权限 在调用推送前,先检查并请求用户授权:

// 检查权限状态
uni.getSetting({
  success: (res) => {
    if (!res.authSetting['scope.requireNotification']) {
      // 未授权时请求权限
      uni.authorize({
        scope: 'scope.requireNotification',
        success: () => {
          console.log('通知权限授权成功')
          // 授权成功后执行推送
          this.createPushMessage()
        },
        fail: () => {
          // 用户拒绝授权,引导手动开启
          uni.showModal({
            title: '提示',
            content: '通知功能需要您授权通知权限',
            confirmText: '去开启',
            success: (res) => {
              if (res.confirm) {
                // 跳转到应用设置页面
                uni.openSetting()
              }
            }
          })
        }
      })
    } else {
      // 已授权,直接执行推送
      this.createPushMessage()
    }
  }
})

3. 处理用户拒绝后的引导 如果用户首次拒绝,后续需要引导用户手动开启:

uni.showModal({
  title: '提示',
  content: '请在系统设置中开启通知权限',
  showCancel: false,
  confirmText: '确定'
})

4. 注意事项

  • 首次调用推送功能时会自动触发系统授权弹窗
  • 用户拒绝后,短期内不会再弹出授权窗口,需要引导用户手动设置
  • 测试时请使用真机,模拟器可能无法正常获取通知权限

按照以上步骤操作即可解决通知权限被拒绝的问题。

回到顶部