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.

Wie es funktioniert
Anchor link toDer 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
fallbackToSettingsaktiviert 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 toKonfigurieren 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 toVerwenden 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.
| Wert | Beschreibung |
|---|---|
.alert | System-UIAlertController. Die Position wird ignoriert. |
.sheet + .bottom | Bottom-Sheet, das nach oben gleitet, mit einem Greifer und Schaltflächen über die volle Breite (Standard). |
.sheet + .top | Kompaktes Banner, das von oben hereinfällt, wie eine Benachrichtigung. |
.sheet + .center | Zentrierter 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()
Anpassung
Anchor link toAlle 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:
| Setter | Beschreibung |
|---|---|
image / imageURL | Ein 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. |
backgroundColor | Einfarbige Hintergrundfarbe der Karte. |
backgroundGradient | Ein Array von Farben, das als weicher, mehrfarbiger Verlauf gerendert wird. Überschreibt backgroundColor. |
titleColor / messageColor | Textfarben für Titel und Nachricht. |
acceptButtonColor / acceptButtonTextColor | Hintergrund- und Textfarben der Akzeptieren-Schaltfläche. Die Akzeptieren-Farbe färbt auch das Standardsymbol ein. |
declineButtonColor / declineButtonTextColor | Hintergrund- und Textfarben der Ablehnen-Schaltfläche. |
cornerRadius | Eckenradius der Karte. |
buttonCornerRadius / buttonBorderColor | Eckenradius und Randfarbe beider Schaltflächen. |
Verhaltenseinstellungen
Anchor link toFallback zu den Einstellungen
Anchor link toStandardmäß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 toStandardmäß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 anzeigenErgebnis 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.