--- title: Push API slug: Web/API/Push_API tags: - API - Experimental - Landing - Notificações - Push - Referencia - Service Workers translation_of: Web/API/Push_API ---
Push API permite que as aplicações da Web recebam as mensagens submetidas para as mesmas a partir de um servidor, se a aplicação da Web está em primeiro plano, ou mesmo atualmente carregada, num agente de utilizador. Isto permite que os programadores entreguem notificações e atualizações assíncronas aos utilizadores que optem, resultando num melhor compromisso com os novos conteúdos atualizados.
For an app to receive push messages, it has to have an active service worker. When the service worker is active, it can subscribe to push notifications, using {{domxref("PushManager.subscribe()")}}.
The resulting {{domxref("PushSubscription")}} includes all the information that the application needs to send a push message: an endpoint and the encryption key needed for sending data.
The service worker will be started as necessary to handle incoming push messages, which are delivered to the {{domxref("ServiceWorkerGlobalScope.onpush")}} event handler. This allows apps to react to push messages being received, for example, by displaying a notification (using {{domxref("ServiceWorkerRegistration.showNotification()")}}.)
Each subscription is unique to a service worker. The endpoint for the subscription is a unique capability URL: knowledge of the endpoint is all that is necessary to send a message to your application. The endpoint URL therefore needs to be kept secret, or other applications might be able to send push messages to your application.
Activating a service worker to deliver a push message can result in increased resource usage, particularly of the battery. Different browsers have different schemes for handling this, there is currently no standard mechanism. Firefox allows a limited number (quota) of push messages to be sent to an application, although Push messages that generate notifications are exempt from this limit. The limit is refreshed each time the site is visited. In comparison, Chrome applies no limit, but requires that every push message causes a notification to be displayed.
Nota: As of Gecko 44, the allowed quota of push messages per application is not incremented when a new notification fires, when another is still visible, for a period of three seconds. This handles cases where a burst of notifications is received, and not all generate a visible notification.
Nota: Chrome versions earlier than 52 require you to set up a project on Google Cloud Messaging to send push messages, and use the associated project number and API key when sending push notifications. It also requires an app manifest, with some special parameters to use this service.
The following additions to the Service Worker API have been specified in the Push API spec to provide an entry point for using Push messages. They also monitor and respond to push and subscription change events.
Mozilla's ServiceWorker Cookbook contains many useful Push examples.
Especificação | Estado | Comentário |
---|---|---|
{{SpecName("Push API")}} | {{Spec2("Push API")}} | Definição inicial |
Funcionalidade | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Suporte básico | {{CompatChrome(42.0)}} | {{CompatGeckoDesktop(44.0)}}[1][3] | {{CompatNo}}[2] | {{CompatUnknown}} | {{CompatUnknown}} |
{{domxref("PushEvent.data")}}, {{domxref("PushMessageData")}} |
{{CompatNo}} | {{CompatGeckoDesktop(44.0)}}[3] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
Funcionalidade | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Suporte básico | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile(48.0)}}[4] | {{CompatNo}} | {{CompatUnknown}}[2] | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatChrome(42.0)}} |
{{domxref("PushEvent.data")}}, {{domxref("PushMessageData")}} |
{{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile(48.0)}}[4] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |