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

Ionic 5(Cordova)中phonegap-plugin-push在Android12+及iOS无法接收推送

解决Ionic 5 + Cordova项目中phonegap-plugin-push在Android 12+及iOS的推送接收问题

Android 12+ 解决方案

1. 升级插件到最新版本

phonegap-plugin-push旧版本未适配Android 12的PendingIntent规则和通知权限要求,先卸载并重装最新版:

cordova plugin remove phonegap-plugin-push
cordova plugin add phonegap-plugin-push@latest

2. 配置通知渠道(Android 8+强制要求)

初始化Push插件时必须指定通知渠道信息,否则推送无法显示:

import { Push, PushObject, PushOptions } from '@ionic-native/push/ngx';

constructor(private push: Push) {}

initPush() {
  const options: PushOptions = {
    android: {
      senderID: "你的FCM Sender ID",
      channel: "custom_notification_channel", // 自定义渠道ID
      channelName: "通知渠道名称",
      channelDescription: "渠道描述",
      sound: true,
      vibrate: true
    }
  };

  const pushObject: PushObject = this.push.init(options);
  
  // 监听注册、接收事件
  pushObject.on('registration').subscribe(data => {
    console.log('设备注册ID:', data.registrationId);
  });

  pushObject.on('notification').subscribe(notification => {
    console.log('收到推送:', notification);
    // 处理推送逻辑
  });
}

3. 适配Android 13+的通知权限

Android 13+需要主动申请POST_NOTIFICATIONS权限,可借助cordova-plugin-android-permissions实现:

cordova plugin add cordova-plugin-android-permissions

在代码中请求权限后再初始化Push:

import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';

constructor(private androidPermissions: AndroidPermissions, private push: Push) {}

async setupPush() {
  const hasPermission = await this.androidPermissions.checkPermission(
    this.androidPermissions.PERMISSION.POST_NOTIFICATIONS
  );

  if (!hasPermission.hasPermission) {
    const result = await this.androidPermissions.requestPermission(
      this.androidPermissions.PERMISSION.POST_NOTIFICATIONS
    );
    if (!result.hasPermission) {
      console.log('用户拒绝了通知权限');
      return;
    }
  }

  // 初始化Push插件
  this.initPush();
}

4. 检查AndroidManifest配置

确保AndroidManifest.xml中包含必要权限(插件通常会自动添加,但可手动验证):

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

iOS 解决方案

1. 升级插件并验证证书

确保使用最新版phonegap-plugin-push,同时检查APNs证书:

  • 登录Apple开发者后台,确认推送证书(开发/生产环境)未过期、绑定的Bundle ID与项目一致
  • 证书需正确导入到推送服务端(如FCM或自行搭建的推送服务)

2. 开启Xcode推送相关能力

  1. 打开项目的platforms/ios目录下的.xcworkspace文件
  2. 选择项目target,进入Signing & Capabilities标签
  3. 添加Push Notifications能力
  4. 在Background Modes中勾选Remote notifications

3. 配置权限提示文案

在info.plist中添加通知权限的说明文案(iOS 10+要求):

<key>NSNotificationSettingsUsageDescription</key>
<string>接收推送通知以便及时获取重要消息</string>
<key>NSRemoteNotificationUsageDescription</key>
<string>接收推送通知以便及时获取重要消息</string>

4. 验证设备权限

确保iOS设备的通知权限已开启:

  • 进入设备设置 → 通知 → 找到你的App → 开启允许通知及相关选项

通用排查步骤

  • 查看设备日志:Android用adb logcat搜索PushPlugin相关报错;iOS用Xcode控制台查看推送相关日志
  • 验证推送服务端:确认FCM/APNs的配置参数(如服务器密钥、证书)正确,推送请求返回成功
  • 测试环境区分:开发环境用开发证书/FCM测试服务器,生产环境用生产证书/正式服务器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:57:03