PushManager : la méthode getSubscription()

Baseline 2023

Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

La méthode PushManager.getSubscription() de l'interface PushManager récupère un abonnement push existant.

Elle renvoie une promesse (Promise) qui renvoie à un objet PushSubscription contenant les détails d'un abonnement existant. S'il n'y a pas d'abonnement existant, cette promesse renvoie une valeur null.

Syntaxe

js
getSubscription()

Paramètres

Aucun.

Valeur de retour

Une promesse (Promise) qui se résout en un objet PushSubscription ou null.

Exemples

Cet extrait de code est tiré d'un exemple de messagerie et de notification push.

js
// Nous avons besoin de l'enregistrement du service worker pour vérifier
// l'existence d'un abonnement
navigator.serviceWorker.ready.then((serviceWorkerRegistration) => {
  // Avons-nous déjà un abonnement aux messages push ?
  serviceWorkerRegistration.pushManager
    .getSubscription()
    .then((subscription) => {
      // Activer toute interface utilisateur d'inscription / désinscription
      // des messages push.
      const pushButton = document.querySelector(".js-push-button");
      pushButton.disabled = false;

      if (!subscription) {
        // Nous ne sommes pas abonnés à push, donc définir l'UI
        // pour permettre à l'utilisateur d'activer push
        return;
      }

      // Maintenez votre serveur synchronisé avec le dernier subscriptionId
      sendSubscriptionToServer(subscription);

      showCurlCommand(subscription);

      // Réglez votre interface utilisateur pour montrer qu'ils se sont abonnés
      // à des messages push
      pushButton.textContent = "Désactiver les messages push";
      isPushEnabled = true;
    })
    .catch((err) => {
      console.error(`Erreur lors de getSubscription() : ${err}`);
    });
});

Spécifications

Specification
Push API
# dom-pushmanager-getsubscription

Compatibilité des navigateurs

BCD tables only load in the browser