PWA推送通知在React中注册失败怎么办?
我在用React做PWA,想接入Push API实现推送通知,但service worker注册后调用pushManager.subscribe一直报错,说“Registration failed – no sender id provided”。我明明已经配置了VAPID公钥,是不是哪里漏了?
这是我的订阅代码:
const subscribeUser = async () => {
const registration = await navigator.serviceWorker.ready;
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(VAPID_PUBLIC_KEY)
});
console.log('Subscribed:', subscription);
};
首先得确认你在service worker里正确引用了firebase-messaging-sw.js,并且在初始化Firebase时传入了senderId。这个senderId是你在Firebase控制台创建项目后得到的。
另外,确保你的manifest.json包含了正确的gcm_sender_id。虽然PWA现在主要用VAPID密钥,但旧版兼容还是需要这个字段:
修改后的订阅代码大概是这样:
记得服务端要能处理和存储这些订阅数据。
这东西调试起来真头疼,尤其是跨浏览器测试。慢慢来,一步步排查吧。