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

Cordova Ionic应用在Android12/13推送通知失效求助

Android 12+ 推送通知接收问题排查思路

1. 检查Android 12+ 专属权限配置

  • 确认AndroidManifest.xml中已添加POST_NOTIFICATIONS权限:
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    
  • 必须在应用运行时主动请求该权限,Android 12+不再允许仅通过清单声明自动获取通知权限。可借助cordova-plugin-android-permissions实现:
    const permissions = cordova.plugins.permissions;
    permissions.requestPermission(permissions.POST_NOTIFICATIONS, 
      () => console.log("通知权限已授权"),
      err => console.error("通知权限授权失败", err)
    );
    

2. 验证FCM插件的Android 12+适配性

  • 确认使用的FCM插件(如cordova-plugin-fcm-with-dependecy-updated)已更新至最新版本,旧版本插件通常未适配Android 12的通知渠道强制要求。
  • 确保已创建有效的通知渠道,Android 12+所有推送必须关联渠道:
    if (cordova.platformId === 'android') {
      FCM.createNotificationChannel({
        id: "default_push_channel",
        name: "应用推送通知",
        description: "接收应用各类推送消息",
        importance: "high"
      });
    }
    
  • 发送推送时必须指定正确的渠道ID,否则通知会被系统拦截。

3. 核对cordova-android 11.x配置细节

  • 确认config.xml中targetSdkVersion已设置为31(Android 12对应API版本)或更高:
    <preference name="android-targetSdkVersion" value="31" />
    
  • 检查自定义Activity的android:exported属性,cordova-android 11.x会自动处理默认Activity的该属性,但自定义Activity需手动设置(启动类设为true,其他按需配置)。

4. 验证FCM令牌有效性

  • 应用启动时重新获取并打印FCM令牌,确认令牌正常刷新并上传至服务器:
    FCM.getToken().then(token => {
      console.log("当前FCM令牌:", token);
      // 将令牌同步到你的推送服务器
    });
    
  • 直接通过Firebase控制台向该令牌发送测试推送,排查是应用接收环节还是服务器发送逻辑的问题。

5. 排查系统后台限制与电池优化

  • Android 12+对后台应用管控更严格,需确认应用已加入电池优化白名单,可通过代码请求忽略优化:
    cordova.plugins.batteryOptimization.isIgnoringBatteryOptimizations(result => {
      if (!result) {
        cordova.plugins.batteryOptimization.requestIgnoreBatteryOptimizations();
      }
    });
    
  • 针对小米、华为、OPPO等厂商定制系统,需引导用户开启应用的「自启动权限」「后台运行权限」,这类厂商会额外限制后台应用的推送接收。

6. 查看系统级通知日志

  • 用Android Studio的Logcat过滤NotificationManager或FirebaseMessaging关键词,查看推送是否被系统接收、是否因渠道配置错误被拦截等细节。
  • 检查NotificationService相关日志,确认通知的流转状态。

7. 确认推送消息格式适配

  • 针对Android 12+设备,避免使用已弃用的通知属性(如priority),改用通知渠道的importance控制通知优先级。
  • 若使用数据消息(Data Message),需确保应用在后台时能正确接收并触发本地通知;若使用通知消息(Notification Message),需保证notification字段的内容符合Android 12+的展示要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:45:28