# So erstellen Sie ein benutzerdefiniertes Abonnement-Widget

## Erstellen eines Abonnement-Widgets

Wenn das Standard-Widget nicht Ihren Zielen und Vorlieben entspricht, können Sie Ihr eigenes benutzerdefiniertes Abonnement-Widget erstellen, indem Sie die unten beschriebenen Schritte befolgen.

1. Fügen Sie Ihrem Projekt ein verstecktes `<div>` hinzu, das die Aufforderung zum Abonnieren enthält.

```txt
<div class="push-notification-widget push-notification-widget_hidden" id="push-notification-widget">
  <div class="push-notification-widget__title">
    Verpassen Sie nichts Wichtiges – abonnieren Sie Push-Benachrichtigungen!
  </div>
  <div class="push-notification-widget__control">
    <button class="push-notification-widget__button" type="button" onClick="Pushwoosh.subscribe()">
      Abonnieren
    </button>
  </div>
  <div class="push-notification-widget__success">
    Sie sind abonniert
  </div>
</div>
```

2. Geben Sie die Stile an.

```txt
<style>
  .push-notification-widget_hidden {
    display: none;
  }

  .push-notification-widget__success {
    display: none;
  }

  .push-notification-widget_subscribed .push-notification-widget__title {
    display: none;
  }

  .push-notification-widget_subscribed .push-notification-widget__control {
    display: none;
  }

  .push-notification-widget_subscribed .push-notification-widget__success {
    display: block;
  }
</style>
```

3. Sobald das Pushwoosh WebSDK initialisiert ist, überprüfen Sie, ob ein Benutzer bereits abonniert ist oder Berechtigungsanfragen blockiert hat. Wenn nicht, zeigen Sie das Widget an.

<Aside type="caution">
Stellen Sie sicher, dass das Widget NACH der vollständigen Initialisierung des WebSDK angezeigt wird. Andernfalls funktioniert das Widget nicht korrekt.
</Aside>

```txt
<script>
  var $subscriptionWidget = document.getElementById('push-notification-widget');
  var Pushwoosh = Pushwoosh || [];
  // zeigt eine Erfolgsmeldung an, wenn ein Gerät Push-Benachrichtigungen abonniert
  Pushwoosh.push(['onSubscribe', () => {
    $subscriptionWidget.classList.add('push-notification-widget_subscribed');
  }]);
  Pushwoosh.push(() => {
    /* jetzt ist das WebSDK bereit und Sie können öffentliche Methoden verwenden. */
    // erstellt ein Array für Promise.all
    var actions = [];
    // überprüft die Berechtigung des Geräts für Push-Benachrichtigungen
    var permission = Pushwoosh.driver.getPermission();
    // überprüft, ob ein Gerät in Pushwoosh registriert ist und Push-Benachrichtigungen empfangen kann
    var isSubscribed = Pushwoosh.isSubscribed();
    actions.push(permission);
    actions.push(isSubscribed);
    // wartet, bis alle Aktionen abgeschlossen sind
    Promise.all(actions)
      .then((result) => {
        var permission = result[0];
        var isSubscribed = result[1];
        // wenn Push-Benachrichtigungen auf einem Gerät nicht blockiert sind (kann eine native Berechtigungsaufforderung anzeigen)
        // und wenn das Gerät keine Push-Benachrichtigungen abonniert hat (einschließlich manueller Abmeldung)
        // Benachrichtigungs-Widget anzeigen
        if (permission !== 'denied' && !isSubscribed) {
          $subscriptionWidget.classList.remove('push-notification-widget_hidden');
        }
      });
  });
</script>
```