Abonnement-Widget
Das Abonnement-Widget besteht aus einer Aufforderung und einer Launcher-Glocke, die Website-Besucher einladen, Push-Benachrichtigungen zu abonnieren. Beide werden gemeinsam als subscriptionWidget konfiguriert, aber unabhängig voneinander aktiviert: nur die Aufforderung, nur die Glocke oder beide zugleich. Sobald eines von beiden aktiviert ist, ersetzt es die Schaltfläche für Push-Abonnements, das benutzerdefinierte Abonnement-Popup und die Abonnement-Aufforderung — solange mindestens ein Teil aktiv ist, wird keines dieser drei älteren Widgets auf der Seite geladen.
Ein Besucher, der sich noch nicht entschieden hat, sieht die Aufforderung der Einladung. Ein Besucher, der Benachrichtigungen bereits blockiert hat, sieht stattdessen eine Erklärung, wie er sie entsperren kann.
Voraussetzungen
Anchor link toStellen Sie sicher, dass Sie Pushwoosh Web SDK 3.0 auf Ihrer Website implementiert haben. Folgen Sie dazu unserem Integrationsleitfaden.
1. Aufforderung und Glocke aktivieren
Anchor link toFügen Sie den Parameter subscriptionWidget zur WebSDK-Initialisierung hinzu und setzen Sie prompt.enabled und/oder launcher.enabled auf true:
Pushwoosh.push(['init', { //... subscriptionWidget: { prompt: { enabled: true }, launcher: { enabled: true }, }}]);Jedes der folgenden Felder ist optional. Ein ausgelassenes Feld verwendet seinen Standardwert. Im Init-Snippet wird eine Zahl außerhalb ihres Bereichs stillschweigend auf die nächste Grenze begrenzt, und ein ungültiger Enum-Wert wird stillschweigend auf seinen Standardwert zurückgesetzt, ohne Konsolenwarnung. Die weiter unten beschriebenen Control-Panel-Formulare validieren jedes Feld und verweigern das Speichern eines ungültigen Werts.
2. Aufforderung und Glocke konfigurieren
Anchor link toPushwoosh.push(['init', { //... subscriptionWidget: { prompt: { enabled: true, layout: 'card', // 'card' | 'bar' | 'modal' position: 'bottom-right', iconUrl: 'https://url-image.png', borderRadius: 12, // 0–32 overlay: false, }, launcher: { enabled: true, position: 'bottom-right', // 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' offset: 20, // 0–100 width: 48, // 16–200 height: 48, // 16–200 imageUrl: 'https://url-image.png', background: '#4285f4', iconColor: '#ffffff', }, display: { trigger: 'auto', // 'auto' | 'launcher' | 'manual' delay: 5, // seconds, 0–3600 cappingCount: 3, // auto-shows per visitor, 0–100, 0 = unlimited cappingInterval: 24, // hours between auto-shows, 0–8760 }, texts: { title: 'Stay in the loop', message: 'Get notified about news and updates.', acceptText: 'Allow', declineText: 'Not now', closeText: 'Close', blockedTitle: 'Notifications are blocked', blockedMessage: 'Enable notifications in your browser settings to stay updated.', launcherLabel: 'Subscribe to notifications', launcherBlockedLabel: 'Notifications are blocked', }, colors: { background: '#ffffff', accent: '#4285f4', text: '#000000', textSecondary: '#666666', }, }}]);Layout und Position
Anchor link toprompt.layout legt die Form der Aufforderung fest:
card— eine kompakte Karte, verankert an einer Kante oder Ecke.prompt.positionakzeptierttop,bottom,top-left,top-right,bottom-leftoderbottom-right.bar— eine Leiste über die gesamte Seitenbreite.prompt.positionakzeptiert nurtopoderbottom.modal— ein auf der Seite zentriertes Fenster.prompt.positionist immercenter.
Prüfen Sie die obige Liste für das von Ihnen eingestellte Layout, bevor Sie eine Position wählen. Im Init-Snippet wird eine vom aktuellen Layout nicht unterstützte Position stillschweigend durch den Standardwert des Layouts ersetzt. Das Control-Panel-Formular lehnt die Kombination stattdessen ab.
Wann die Aufforderung angezeigt wird
Anchor link todisplay.trigger steuert, wodurch die Aufforderung geöffnet wird:
auto— öffnet sich automatischdisplay.delaySekunden nach dem Laden der Seite, dann erneut alledisplay.cappingIntervalStunden, falls der Besucher sich nicht entschieden hat, bis zudisplay.cappingCountMal insgesamt (0bedeutet kein Limit).launcher— öffnet sich nie per Timer. Setzen Sie dies zusammen mitlauncher.enabled: true, damit ein Klick auf die Glocke sie öffnen kann. Die manuelle API öffnet sie unabhängig von dieser Einstellung und davon, ob die Glocke aktiviert ist.manual— öffnet sich nur überPushwoosh.moduleRegistry.subscriptionWidget, weiter unten beschrieben.
display.delay, display.cappingCount und display.cappingInterval gelten nur für den auto-Trigger.
Die Launcher-Glocke
Anchor link tolauncher.enabled zeigt eine schwebende Glocke für einen Besucher an, der auf die Aufforderung noch reagieren kann (noch nicht abonniert oder blockiert), unabhängig von der Aufforderung und von display.trigger. Die Glocke bleibt auf dem Bildschirm sichtbar, während die Aufforderung geöffnet ist. launcher.position platziert sie in einer der vier Ecken. launcher.offset legt ihren Abstand von den Rändern in Pixeln fest.
Was ein Klick auf die Glocke bewirkt, hängt von der Aufforderung ab. Ist prompt.enabled auf true gesetzt, schaltet der Klick sie um: Er öffnet sie oder schließt sie, wenn sie bereits geöffnet ist. Ist die Aufforderung deaktiviert, fragt der Klick den Browser direkt nach der Berechtigung, genau wie Pushwoosh.subscribe() — es sei denn, der Besucher hat Benachrichtigungen bereits blockiert; dann bewirkt der Klick nichts.
launcher.width und launcher.height legen die Größe der Glocke in Pixeln fest (16–200, jeweils standardmäßig 48). launcher.imageUrl zeichnet ein Bild anstelle der runden Glockenschaltfläche. launcher.background und launcher.iconColor legen die Füllfarbe und die Symbolfarbe der runden Schaltfläche fest. Ohne Angabe verwendet launcher.background standardmäßig die Akzentfarbe der Palette und launcher.iconColor eine Symbolfarbe, die für einen guten Kontrast dazu berechnet wird.
Texte und Farben
Anchor link totexts.blockedTitle, texts.blockedMessage und texts.closeText werden anstelle der Aufforderung angezeigt, sobald der Browser meldet, dass der Besucher Benachrichtigungen blockiert hat — texts.acceptText und texts.declineText erscheinen in diesem Zustand nie. texts.launcherLabel und texts.launcherBlockedLabel sind der Tooltip der Glocke in jedem Zustand. Jedes Textfeld akzeptiert bis zu 300 Zeichen.
colors.accent, colors.background, colors.text und colors.textSecondary akzeptieren einen Hex-Wert oder einen CSS-Farbnamen. Die Control-Panel-Formulare validieren jedes dieser Felder sowie launcher.background/launcher.iconColor auf diese Weise, bis zu 64 Zeichen. Das Init-Snippet akzeptiert für colors.* jede nicht leere Zeichenfolge, ohne Format oder Länge zu prüfen. Für launcher.background/launcher.iconColor prüft es ebenfalls kein Format, kürzt den Wert aber stillschweigend auf 64 Zeichen.
Verwaltung im Control Panel
Anchor link toGehen Sie bei einer über das Panel verwalteten Anwendung zu Settings → Configure platforms → Web. Die Aufforderung und die Glocke sind dort zwei getrennte Karten, jeweils mit eigenem On/Off-Badge und eigener Schaltfläche Configure:
- Subscription invitation bearbeitet die Aufforderung: Invitation (Layout, Position, Symbol), When to show (Trigger, Verzögerung, Capping), Texts und Colors.
- Subscription bell bearbeitet den Launcher: Position, Bild-URL, Breite/Höhe, Hintergrund- und Symbolfarbe sowie eigene Tooltip-Texte.
Die Schaltfläche Configure jeder Karte öffnet neben dem Formular eine Live-Vorschau. Die Vorschau zeigt nichts an, solange der Schalter der jeweiligen Karte ausgeschaltet ist. Sobald er eingeschaltet ist, wechselt ein Dropdown über der Vorschau zwischen der Aufforderung für unentschlossene Besucher und der Erklärung für blockierte Besucher. Das Speichern einer Karte ersetzt nur deren Hälfte der Panel-Kopie der Widget-Konfiguration — die Einstellungen der anderen Karte und das WebSDK-Init-Snippet auf Ihrer Website bleiben unberührt.
Solange eine Anwendung über das Panel verwaltet wird, überschreiben die in einer der beiden Karten gespeicherten Werte dieselben Schlüssel im Init-Snippet der Website.
3. Die Aufforderung aus Ihrem Code steuern
Anchor link toSobald das Widget-Bundle geladen wurde, veröffentlicht es eine API unter Pushwoosh.moduleRegistry.subscriptionWidget:
Pushwoosh.moduleRegistry.subscriptionWidget.show(); // Opens the promptPushwoosh.moduleRegistry.subscriptionWidget.hide(); // Closes the promptPushwoosh.moduleRegistry.subscriptionWidget.toggle(); // Toggles the current statePushwoosh.moduleRegistry.subscriptionWidget.toggle(true); // Opens the promptPushwoosh.moduleRegistry.subscriptionWidget.isVisible(); // Returns whether the prompt is openshow() und toggle() haben keine Wirkung, solange prompt.enabled auf false steht, und keine Wirkung für einen Besucher, der bereits abonniert hat. Das Öffnen der Aufforderung löst ein show-subscription-widget-Ereignis aus. Das Schließen löst hide-subscription-widget aus:
Pushwoosh.addEventHandler('show-subscription-widget', function() { console.log('Triggered event: show-subscription-widget');});
Pushwoosh.addEventHandler('hide-subscription-widget', function() { console.log('Triggered event: hide-subscription-widget');});Migration von den älteren Widgets
Anchor link toDie Schaltfläche für Push-Abonnements, das benutzerdefinierte Abonnement-Popup und die Abonnement-Aufforderung funktionieren weiterhin wie auf ihren eigenen Seiten dokumentiert, solange subscriptionWidget.prompt.enabled und subscriptionWidget.launcher.enabled der Website beide nicht gesetzt oder false bleiben. Wird eines von beiden aktiviert, stoppt das Laden aller drei, sowohl bei einer per Snippet konfigurierten als auch bei einer über das Panel verwalteten Anwendung.