Ionic/Cordova 接入极光推送后收不到消息,不一定是同一个问题。插件未正确集成、设备没有注册、目标应用不匹配、APNs 环境选错,以及系统没有展示通知,都可能表现为“手机没动静”。

版本清单要分清组件

2018 年的几次记录涉及 jpush-phonegap-plugin 3.4.0、3.3.2、3.5.1,JCore 1.1.12,以及 cordova-android 7.0.0 等组合。这些是历史定位线索,不是一张可对所有工程使用的兼容表。

先查看项目实际状态:

cordova --version
cordova platform ls
cordova plugin ls

再对照 package.json、config.xml、锁文件与原生依赖。Cordova CLI、Android/iOS 平台包、JPush 插件、JCore 和原生 SDK 的版本不是同一个东西。

版本调整应有明确兼容说明,并在分支或可恢复环境中单变量验证;不要因为“高于某版本”就批量卸载插件。极光官方 Cordova 插件

先有注册目标,再检查发送

后台出现:

此应用还没有一个客户端用户注册。请检查 SDK 集成是否正常。

它首先提示应用下没有可用的注册目标,不能直接推出 iOS SDK 版本一定错误。

在受控测试设备上确认:原生插件是否加载、初始化是否按集成要求完成、AppKey 是否对应同一个极光应用、网络是否可达,以及是否已经取得有效 Registration ID。等待真实注册回调,不把空值、旧缓存值或另一应用的 ID 当成当前目标。

注册标识和设备日志可能关联具体设备,不应在公开文章或工单中无保护地粘贴。

iOS 还要匹配推送环境

apns_production 控制 iOS Notification 的 APNs 环境。官方说明中,true 对应生产,false 对应开发;应与应用签名、推送配置及实际目标环境一致,而不是“收不到就设 true”。极光推送 API options

例如,若测试目标明确属于开发环境,请求参数中相应片段为:

{
  "options": {
    "apns_production": false
  }
}

这只是字段示意,不是完整可发送请求。直接 REST API 与具体服务端 SDK 的默认行为也可能不同,最好明确设置并核对所用 SDK 文档,不依赖猜测。

按链路保留证据

  1. 初始化:客户端插件和原生集成是否成功。
  2. 注册:当前应用、当前设备是否生成有效目标。
  3. 发送:使用脱敏后的单设备目标,记录发送返回状态与消息标识。
  4. 送达和接收:查看相应回执、客户端回调与网络状态。
  5. 展示:检查系统通知权限、前后台行为和平台通道。

服务器受理不等于设备送达,设备收到也不等于一定弹出通知。Android 的插件兼容处理不能直接证明 iOS 的注册或证书问题已经解决。把链路分开,再决定是修改集成、环境、权限还是版本。