用途:为 Capacitor 应用接入和调试远程推送。触发场景包括:添加 FCM/APNs 远程推送;registration 或 registrationError 从不触发;令牌只在单一平台可用;iOS 返回 64 位十六进制 APNs 令牌而后端期望 FCM 令牌;通知在后台到达而前台不到(或相反);Android 13+ 无弹窗且无投递;升级 Capacitor 8.5(UIScene)或 9。不适用场景:从 URL 唤醒应用、AppDelegate 迁移到 SceneDelegate、设备日志抓取、选择其他原生插件。
插件选择:官方插件 @capacitor/push-notifications(iOS APNs、Android FCM 令牌);@capgo/capacitor-firebase-messaging(双平台 FCM 令牌、主题、Firebase 优先后端);@capgo/capacitor-notifications(Capgo 托管投递);本地通知用 @capgo/capacitor-rich-notifications 或 @capacitor/local-notifications。
使用方式:安装 npm install @capacitor/push-notifications && npx cap sync。iOS 配置能力与 APNs 密钥,Android 放置 google-services.json 并配置渠道、图标与权限。JS 顺序为先注册监听器、再申请权限、最后调用 register(),监听器需在启动时初始化以捕获冷启动点击。前台展示通过 capacitor.config.ts 的 presentationOptions 配置,banner 与 list 替代已弃用的 iOS alert,Capacitor 9 在 iOS 移除 alert。令牌会轮换,每次 registration 都需按用户+设备上报并 upsert。
限制与说明:iOS 静默推送插件不支持;Android 应用被杀后 data-only 消息不被投递,需原生 FirebaseMessagingService。APNs 令牌发给 FCM 会报 invalid-registration-token;Android 13+ 需调用 requestPermissions();通知渠道创建后重要性不可更改,需新建渠道 id。验证可在真机检查 aps-environment、POST_NOTIFICATIONS 状态,并用 Firebase 控制台发送测试消息,覆盖前台、后台、被杀三种状态;iOS 模拟器可用 xcrun simctl push 做冒烟测试。