You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 13(API Level 33)下Cordova推送通知故障及权限请求求助

Cordova Android 13(API 33)推送通知故障排查与权限处理

一、如何向用户请求通知权限

Android 13(API 33)新增POST_NOTIFICATIONS运行时权限,应用必须主动请求该权限才能发送通知,具体实现步骤如下:

  1. 更新推送插件版本
    确保使用的@havesource/cordova-plugin-push版本不低于v3.0.0(该版本开始适配Android 13权限),执行更新命令:
cordova plugin update @havesource/cordova-plugin-push
  1. 在config.xml中声明权限
    添加权限配置:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  1. 代码中检查并请求权限
    初始化推送插件前后,调用插件的权限检查和请求方法:
// 初始化推送插件
const pushInstance = PushNotification.init({
    android: {
        senderID: "你的Firebase SenderID",
        channelId: "default_notification_channel", // Android 8.0+必须配置通知通道
        channelName: "默认通知",
        channelDescription: "接收应用推送通知"
    }
});

// 检查权限状态并请求
pushInstance.hasPermission(status => {
    if (!status.isEnabled) {
        pushInstance.requestPermission(status => {
            if (status.isEnabled) {
                console.log("用户已授予通知权限");
            } else {
                console.log("用户拒绝通知权限,无法接收推送");
            }
        });
    }
});

二、已开启通知但无法接收的排查步骤

  1. 确认通知通道配置
    Android 8.0+必须创建通知通道,Android 13依赖通道配置正常。确保初始化插件时正确配置了channelId、channelName、channelDescription,且推送Payload中指定的channel_id与插件配置一致。

  2. 检查FCM配置正确性

  • 确保google-services.json文件已正确放置在platforms/android/app目录下,文件中的包名与App的packageName完全匹配
  • 确认Firebase控制台中已为该App启用FCM服务,SenderID配置无误
  1. 排查PHP推送脚本
  • 确保Payload中包含notification字段(用于前台显示通知)或data字段(用于后台逻辑处理)
  • 针对Android 13,建议在Payload的Android配置中设置高优先级:
$fields = array(
    'to' => $token,
    'notification' => array(
        'title' => '测试通知',
        'body' => '这是一条测试推送'
    ),
    'android' => array(
        'priority' => 'high',
        'notification' => array(
            'channel_id' => 'default_notification_channel' // 与插件初始化的channelId一致
        )
    )
);
  1. 检查设备系统设置
  • 先关闭再重新开启App的通知权限,排除设置异常
  • 将App加入设备电池优化白名单,避免系统限制后台通知接收
  1. 查看设备日志定位问题
    使用adb命令查看FCM和推送插件的日志信息:
# 过滤FCM相关日志
adb logcat | grep FCM

# 过滤推送插件日志
adb logcat | grep PushPlugin

日志中会包含权限错误、通道配置问题或推送接收失败的具体原因,便于精准排查。

内容的提问来源于stack exchange,提问作者Mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:30:13