我们在chrome和firefox中使用FCM实现了推送通知功能,效果良好,但Safari不支持必须用到的Service Workers。
有人遇到这种问题吗?有什么建议吗?
我们在chrome和firefox中使用FCM实现了推送通知功能,效果良好,但Safari不支持必须用到的Service Workers。
有人遇到这种问题吗?有什么建议吗?
虽然服务工作者现在可以在Safari上使用,但这还不够。
文档说:
FCM JavaScript API允许您在支持Push API的浏览器中运行的Web应用程序中接收通知消息。这包括此支持矩阵中列出的浏览器版本。
因此,通过FCM接收消息的能力取决于浏览器实现Web Push API,而Web Kit并未实现该API。
Safari是基于Web Kit构建的,因此不支持Web推送,这意味着Safari无法接收FCM通知。所有iOS设备上的浏览器也都是基于Web Kit构建的(这是苹果的要求),因此FCM也无法在其中任何一个设备上接收消息。
如果您想测试代码运行环境是否可以接收来自FCM的消息,则可以使用以下代码片段:
if (firebase.messaging.isSupported())
...
}
Safari仍不支持Web Push API,因此 Firebase Cloud Messaging服务。
以下是Firebase支持的浏览器: https://firebase.google.com/support/guides/environments_js-sdk#browsers
我建议使用.isSupported()
而不是其他解决方案。
if (firebase.messaging.isSupported())
const messaging = firebase.messaging();
}
有关 .isSupported()
的详细信息,请查看文档。
我不确定这个新的Safari和Service Workers情况,但我尝试在我的iOS应用程序中实现FCM推送通知,并且必须经历需要首先拥有一个APN(Apple-Push-Notification)证书的过程。如果您正在使用Safari,我不确定是否需要这个证书,但我可以想象Apple也希望其推送通知首先被重定向到APN服务器。
苹果表示Safari 16 (macos) 现在应该支持Push API,但我没有成功让Push API通知正常工作。我尝试了Firebase Messaging Web V9(据我了解应该是Push API的封装器),它似乎在后台运行时可以正常工作(通过Service Worker提供的推送),但在前台只能接收3次通知,然后就停止工作了。
这是我如何在IOS 16.4.1和firebase 9.19.1上使Safari推送通知正常工作的方法。
{
"name": "test",
"short_name": "test",
"description": "test",
"display": "standalone",
"theme_color": "#ffffff",
"icons": [
{
"src": "/assets/logo.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/assets/logo.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
希望这可以帮助您!
FCM不支持Safari浏览器。
如果您想为Safari浏览器集成PUSH通知,请按照此链接操作。Safari有自己的机制。