Zum Inhalt springen

iOS Push-Primer

Ein Push-Primer ist ein Soft-Opt-in-Dialog, den Sie vor der iOS-Systemabfrage für Push-Berechtigungen anzeigen. iOS zeigt die Systemabfrage nur einmal pro Installation an – wenn der Benutzer auf Nicht erlauben tippt, gehen die 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 Systemabfrage 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 System-Berechtigungsabfrage angezeigt wird
Push-Primer, der vor der iOS-System-Berechtigungsabfrage 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 System-Berechtigungsabfrage ausgelöst.
  • Autorisiert oder vorläufig – unterdrückt den Primer stillschweigend (es wird nichts angezeigt).
  • Abgelehnt – zeigt den Primer an; bei Zustimmung leitet er den Benutzer zu den Benachrichtigungseinstellungen der App weiter (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 Titel der beiden Schaltflächen.

import PushwooshFramework
Pushwoosh.configure.pushPrimer
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.present()

Stile und Positionen

Anchor link to

Verwenden Sie style, um zwischen einer Systemwarnung 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 + .bottomUnteres Sheet, das nach oben gleitet, mit einem Greifer und Schaltflächen über die gesamte 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("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.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("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.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

Wenn Benachrichtigungen bereits abgelehnt wurden, wird der Primer standardmäßig angezeigt und die „Akzeptieren“-Schaltfläche führt den Benutzer zu den Benachrichtigungseinstellungen der App. Übergeben Sie false, um den Primer im abgelehnten 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 erneut erscheint. Die Zeit der letzten Anzeige wird über Starts hinweg gespeichert.

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

Ergebnis verarbeiten

Anchor link to

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

Pushwoosh.configure.pushPrimer
.title("Stay in the loop")
.message("Get notified about deals and order updates first")
.acceptButton("Enable notifications")
.declineButton("Not now")
.present { outcome in
switch outcome {
case .accepted: break // angezeigt, Benutzer hat zugestimmt, Systemabfrage angefordert
case .declined: break // angezeigt, Benutzer hat abgelehnt
case .suppressed: break // nicht angezeigt (bereits autorisiert oder gedrosselt)
case .redirectedToSettings: break // abgelehnter Zustand, Benutzer zu den Einstellungen weitergeleitet
@unknown default: break
}
}

Das endgültige Ergebnis der Systemabfrage (der gewährte/abgelehnte 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