8

是否有任何简单的方法可以在浏览器(桌面和移动)中检测 Web Push API

4

2 回答 2

15

某些浏览器版本仅支持 service worker,但不支持 Push API。

建议您尝试检测 Push API 本身。

如果您需要以同步方式检查浏览器支持(即无需等待 Promise),您可以使用这个(从Pushpad SDK复制):

function isPushApiSupported() {
  return 'PushManager' in window;
}
于 2016-08-12T10:43:35.083 回答
3

目前,任何支持 Service Workers 的浏览器也支持 Web Push。

所以只需检查是否navigatorserviceWorker属性。

如果您担心将来某些浏览器可能会在 Web Push 之前开始支持 Service Worker,那么这样的事情会起作用:

navigator.serviceWorker.getRegistration()
.then(function(registration) {
  if (registration.pushManager) {
    // Web Push supported.
  } else {
    // Web Push not supported.
  }
});
于 2016-08-12T09:31:28.290 回答