在向 Web 浏览器推送通知的上下文中,推送服务充当 SERVICE WORKER 和 APPLICATION SERVER 之间的接口(interface)。
我目前的理解是
- Google FCM 是 Google Chrome 和 FireFox 浏览器的推送服务
- APNS(Apple 推送通知服务)是 Safari 浏览器的推送服务
这里,在技术上是否可以用通用的自定义服务工作线程来替代“推送服务”(即,用于 Google Chrome 和 FireFox 浏览器的 Google FCM 以及用于 Safari 的 APNS),该服务工作线程有可能解决所有流行的浏览器问题支持 Service Worker 和 Push API?
换句话说,开发人员是否可以控制浏览器使用哪个推送服务(或者)为所有浏览器开发自定义推送服务?
最佳答案
您基本上是正确的:推送服务充当服务工作人员和应用程序服务器之间的接口(interface),此外,服务工作人员(或可能是 Web 应用程序)将订阅信息发送到推送服务之外的应用程序服务器,因此应用程序服务器知道端点以及如何正确加密任何通知内容。
Google 在 Chrome 中使用 GCM/FCM,Mozilla 在桌面版 Firefox 中使用自己的推送服务,而在 Android 中则使用 GCM/FCM 和/或自己的服务;请参阅“Firefox 使用哪些信息来提供 Web 推送?”节here .
在撰写本文时,Chrome , Firefox和 Edge支持 Push API,因此无需单独处理每个 API(WebKit 不支持)。
简短回答:开发人员无法选择客户端使用哪种推送服务,但推送 API 的采用标准化了主要浏览器(不包括 WebKit)的服务工作线程和 Web 推送。
关于service-worker - 定制推送服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51116985/