2016-08-12 10 views

ответ

5

Некоторые версии браузеров поддерживают только работника службы, но не Push API.

Рекомендуется попытаться обнаружить сам API Push.

Если вам необходимо проверить поддержку браузера в синхронным образом (то есть, не дожидаясь Promise), вы можете использовать это (копируется из Pushpad SDK):

function isPushApiSupported() { 
    return 'PushManager' in window; 
} 
+0

Интересно, что я не знал, что некоторые браузеры не поддерживают Push API, но поддерживают сервис-работников! Какие они? – Marco

+0

Firefox для мобильных устройств поддерживает serviceworker, но не Push API –

1

В настоящее время любой браузер, который поддерживает Service Workers, также поддерживает Web Push.

Так что просто проверьте, есть ли у navigator имущество serviceWorker.

Если вы боитесь в будущем некоторые браузеры могут начать поддерживать службы работников, прежде чем веб-Пуш, что-то, как это будет работать:

navigator.serviceWorker.getRegistration() 
.then(function(registration) { 
    if (registration.pushManager) { 
    // Web Push supported. 
    } else { 
    // Web Push not supported. 
    } 
}); 
+0

'' registration' является null' если рабочий сервис не контролирует текущую страницу. – Jason