Zum Inhalt springen

iOS Push-Primer

Ein Push-Primer ist ein Soft-Opt-in-Dialog, den Sie vor der iOS-Systemaufforderung zur Push-Berechtigung anzeigen. iOS zeigt die Systemaufforderung nur einmal pro Installation an – wenn der Benutzer auf Nicht erlauben tippt, sind Push-Benachrichtigungen verloren, bis er sie in den Einstellungen wieder aktiviert. Der Primer ermöglicht es Ihnen, zuerst den Nutzen zu erklären und im richtigen Moment zu fragen, sodass Sie die einmalige Systemaufforderung für Benutzer verwenden, die bereits zugestimmt haben.

Verfügbar seit Version 7.1.1. Der Primer ist Teil des PushwooshFramework; es ist kein zusätzliches Modul erforderlich.

Push-Primer-Dialog, der vor der Systemberechtigungsaufforderung angezeigt wird
Push-Primer, der vor der iOS-Systemberechtigungsaufforderung angezeigt wird

Wie es funktioniert

Anchor link to

Der Primer ist vollständig zustandsbewusst. Er liest den aktuellen Autorisierungsstatus für Benachrichtigungen und entscheidet, was zu tun ist, sodass er bei jedem Start sicher aufgerufen werden kann:

  • Nicht festgelegt – zeigt den Primer an; bei Zustimmung wird die Systemberechtigungsaufforderung ausgelöst.
  • Autorisiert oder provisorisch – unterdrückt den Primer stillschweigend (nichts wird angezeigt).
  • Verweigert – zeigt den Primer an; bei Zustimmung leitet er den Benutzer zu den Benachrichtigungseinstellungen der App (wenn fallbackToSettings aktiviert ist).

Sie entscheiden, wann Sie den Primer aufrufen (zum Beispiel nach dem Onboarding oder nach einer wichtigen Aktion). Das SDK erzwingt kein eigenes Timing, mit Ausnahme der optionalen minInterval-Drosselung, die unten beschrieben wird.

Grundlegende Verwendung

Anchor link to

Konfigurieren Sie den Primer mit einem Fluent Builder und rufen Sie present auf. Die Mindestkonfiguration erfordert einen Titel, eine Nachricht und die beiden Schaltflächentitel.

import PushwooshFramework
Pushwoosh.configure.pushPrimer
.title("Bleiben Sie auf dem Laufenden")
.message("Erhalten Sie als Erster Benachrichtigungen über Angebote und Bestellaktualisierungen")
.acceptButton("Benachrichtigungen aktivieren")
.declineButton("Nicht jetzt")
.present()

Stile und Positionen

Anchor link to

Verwenden Sie style, um zwischen einem System-Alert und einem benutzerdefinierten Sheet zu wählen, und position, um das benutzerdefinierte Sheet zu platzieren. Jede Position hat ihr eigenes Standarddesign.

WertBeschreibung
.alertSystem-UIAlertController. Die Position wird ignoriert.
.sheet + .bottomBottom-Sheet, das nach oben gleitet, mit einem Greifer und Schaltflächen über die volle Breite (Standard).
.sheet + .topKompaktes Banner, das von oben hereinfällt, wie eine Benachrichtigung.
.sheet + .centerZentrierter Dialog, der skaliert und eingeblendet wird.
Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.top)
.title("Bleiben Sie auf dem Laufenden")
.message("Erhalten Sie als Erster Benachrichtigungen über Angebote und Bestellaktualisierungen")
.acceptButton("Benachrichtigungen aktivieren")
.declineButton("Nicht jetzt")
.present()
Push-Primer in unterer, oberer und mittlerer Position

Alle visuellen Einstellungen sind optional – lassen Sie sie weg, um die nativen Standardeinstellungen zu verwenden, die sich an den Hell- und Dunkelmodus anpassen.

Pushwoosh.configure.pushPrimer
.style(.sheet)
.position(.center)
.title("Bleiben Sie auf dem Laufenden")
.message("Erhalten Sie als Erster Benachrichtigungen über Angebote und Bestellaktualisierungen")
.acceptButton("Benachrichtigungen aktivieren")
.declineButton("Nicht jetzt")
.image(UIImage(named: "PrimerHero")) // lokales Bild oder .imageURL("https://…")
.backgroundColor(.systemBackground)
.titleColor(.label)
.messageColor(.secondaryLabel)
.acceptButtonColor(.systemBlue)
.acceptButtonTextColor(.white)
.declineButtonColor(.clear)
.declineButtonTextColor(.secondaryLabel)
.cornerRadius(24)
.buttonCornerRadius(14)
.buttonBorderColor(.separator)
.present()

Anpassungsreferenz:

SetterBeschreibung
image / imageURLEin lokales UIImage oder eine Remote-URL. Wird als Kreis im mittleren und unteren Layout und als Symbol im oberen Banner gerendert. Ein lokales Bild hat Vorrang vor einer URL.
backgroundColorEinfarbige Hintergrundfarbe der Karte.
backgroundGradientEin Array von Farben, das als weicher, mehrfarbiger Verlauf gerendert wird. Überschreibt backgroundColor.
titleColor / messageColorTextfarben für Titel und Nachricht.
acceptButtonColor / acceptButtonTextColorHintergrund- und Textfarben der Akzeptieren-Schaltfläche. Die Akzeptieren-Farbe färbt auch das Standardsymbol ein.
declineButtonColor / declineButtonTextColorHintergrund- und Textfarben der Ablehnen-Schaltfläche.
cornerRadiusEckenradius der Karte.
buttonCornerRadius / buttonBorderColorEckenradius und Randfarbe beider Schaltflächen.

Verhaltenseinstellungen

Anchor link to

Fallback zu den Einstellungen

Anchor link to

Standardmäßig wird der Primer angezeigt, wenn Benachrichtigungen bereits verweigert wurden, und die Akzeptieren-Schaltfläche führt den Benutzer zu den Benachrichtigungseinstellungen der App. Übergeben Sie false, um den Primer im verweigerten Zustand stattdessen vollständig zu unterdrücken.

.fallbackToSettings(false)

Anzeigehäufigkeit

Anchor link to

Standardmäßig hat der Primer keine eingebaute Drosselung – er wird angezeigt, wann immer Sie present aufrufen (und wird automatisch unterdrückt, sobald Benachrichtigungen autorisiert sind). Verwenden Sie minInterval, um zu begrenzen, wie oft der Primer wieder erscheint. Die letzte Anzeigezeit wird über App-Starts hinweg gespeichert.

.minInterval(7 * 24 * 60 * 60) // höchstens einmal pro Woche anzeigen

Ergebnis verarbeiten

Anchor link to

Übergeben Sie eine Completion-Funktion an present, um auf das Ergebnis zu reagieren.

Pushwoosh.configure.pushPrimer
.title("Bleiben Sie auf dem Laufenden")
.message("Erhalten Sie als Erster Benachrichtigungen über Angebote und Bestellaktualisierungen")
.acceptButton("Benachrichtigungen aktivieren")
.declineButton("Nicht jetzt")
.present { outcome in
switch outcome {
case .accepted: break // angezeigt, Benutzer hat akzeptiert, Systemaufforderung angefordert
case .declined: break // angezeigt, Benutzer hat abgelehnt
case .suppressed: break // nicht angezeigt (bereits autorisiert oder gedrosselt)
case .redirectedToSettings: break // verweigerter Zustand, Benutzer zu den Einstellungen gesendet
@unknown default: break
}
}

Das endgültige Ergebnis der Systemaufforderung (der gewährte/verweigerte Zustand und das Geräte-Token) kommt über die regulären Registrierungs-Callbacks an – der Primer verwendet registerForPushNotifications bei Zustimmung wieder und dupliziert diese Kette nicht.

Referenzen

Anchor link to