# Benutzerdefinierte iOS Vordergrund-Push-Benachrichtigung

Ab Version 6.10.0 können Sie das `PushwooshForegroundPush`-Modul integrieren, um Vordergrund-Push-Benachrichtigungen anzupassen, wenn native iOS-Systemwarnungen deaktiviert sind.

### 1. Native Vordergrund-Push-Warnungen deaktivieren

Fügen Sie `Pushwoosh_SHOW_ALERT = false` zu Ihrer `Info.plist` hinzu.

```xml
<key>Pushwoosh_SHOW_ALERT</key>
<false/>
```

### 2. Integrieren des `PushwooshForegroundPush`-Moduls

**Swift Package Manager**
<img src="/spm-foreground-push-ios.webp" alt=""/>

<Aside type="caution" title="Wichtig">
Die Module ```PushwooshFramework```, ```PushwooshCore```, ```PushwooshBridge``` und ```PushwooshLiveActivities``` sind **erforderlich**.
</Aside>

**Cocoapods**
```bash
# Uncomment the next line to define a global platform for your project
# platform :ios, '13.0'

target 'MyApp' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  pod 'PushwooshXCFramework'
  pod 'PushwooshFramework/PushwooshForegroundPush'

end
```

### 3. `PushwooshForegroundPush`-Konfiguration in AppDelegate hinzufügen

```swift
import UIKit
import PushwooshFramework
import PushwooshForegroundPush

@main
class AppDelegate: UIResponder, UIApplicationDelegate, PWMessagingDelegate, PWForegroundPushDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        Pushwoosh.ForegroundPush.foregroundNotificationWith(style: .style1,
                                                            duration: 5,
                                                            vibration: .notification,
                                                            disappearedPushAnimation: .balls)
        
        Pushwoosh.ForegroundPush.delegate = self
        
        return true
    }

    func pushwoosh(_ pushwoosh: Pushwoosh, onMessageReceived message: PWMessage) {
        if let payload = message.payload {
          // Pushwoosh method
          Pushwoosh.ForegroundPush.showForegroundPush(userInfo: payload)
        }
    }
}
```

Verwenden der `foregroundNotificationWith`-Methode

Die `foregroundNotificationWith`-Methode ermöglicht es Ihnen, eine benutzerdefinierte Vordergrund-Push-Benachrichtigung mit konfigurierbarem Stil, Dauer und haptischem Feedback anzuzeigen.

Methodensignatur (Swift / Objective-C):

```swift
@objc
static func foregroundNotificationWith(
    style: PWForegroundPushStyle,
    duration: Int,
    vibration: PWForegroundPushHapticFeedback,
    disappearedPushAnimation: PWForegroundPushDisappearedAnimation
)
```

`Parameter:`

1. `style` (`PWForegroundPushStyle`)
* Derzeit ist nur `style1` verfügbar.

2. `duration` (`Int`)
* Gibt an, wie lange die Benachrichtigung angezeigt wird, bevor sie verschwindet (in Sekunden).

3. `vibration` (`PWForegroundPushHapticFeedback`)
* Steuert das haptische Feedback, wenn die Benachrichtigung angezeigt wird. Verfügbare Optionen:

```swift
case none           // Keine Vibration
case light          // Leichte Vibration
case medium         // Mittlere Vibration
case heavy          // Starke Vibration
case soft           // Weiche Vibration
case rigid          // Harte Vibration
case notification   // Standard-Benachrichtigungsvibration
```

4. `disappearedPushAnimation` (`PWForegroundPushDisappearedAnimation`)
* Animation für das Verschwinden des Push

```swift
case balls = 0
case regularPush
```

### 4. Implementieren der `didTapForegroundPush`-Delegate-Methode

Um das Tippen von Benutzern auf benutzerdefinierte Vordergrund-Push-Benachrichtigungen zu behandeln, implementieren Sie die Protokollmethode `PWForegroundPushDelegate`:

```swift
// Handle tap on foreground push
func didTapForegroundPush(_ userInfo: [AnyHashable : Any]) {
    print("Foreground custom push: \(userInfo)")

    // Perform any action, e.g., navigate to a specific screen
    // navigateToScreen(for: userInfo)
}
```

Hinweise:

* Diese Methode wird aufgerufen, wenn der Benutzer auf einen benutzerdefinierten Vordergrund-Push tippt.
* `userInfo` enthält die Nutzdaten der Benachrichtigung.
* Stellen Sie sicher, dass Sie `Pushwoosh.ForegroundPush.delegate = self` nach der Konfiguration setzen.

### 5. Optionale Parameter zur Anpassung von Vordergrund-Push-Benachrichtigungen

Das `PushwooshForegroundPush`-Modul bietet mehrere optionale Parameter, um das Erscheinungsbild und das Verhalten Ihrer Vordergrund-Push-Benachrichtigungen anzupassen. Diese können global über statische Eigenschaften festgelegt werden.

<table>
  <thead>
    <tr>
      <th style={{ width: '20%' }}>Eigenschaft</th>
      <th style={{ width: '15%' }}>Typ</th>
      <th style={{ width: '45%' }}>Beschreibung</th>
      <th style={{ width: '20%' }}>Standard</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>useLiquidView</td>
      <td>Bool</td>
      <td>Verwendet die Liquid-Glass-Ansicht auf iOS 26.</td>
      <td>false</td>
    </tr>
    <tr>
      <td>gradientColors</td>
      <td>[UIColor]?</td>
      <td>Optionales Array von Farben für einen Verlaufs-Hintergrund.</td>
      <td>nil</td>
    </tr>
    <tr>
      <td>backgroundColor</td>
      <td>UIColor?</td>
      <td>Hintergrundfarbe für den Push. Wenn nil und gradientColors nicht gesetzt sind, wird der Standardverlauf verwendet.</td>
      <td>Standard-Systemverlauf</td>
    </tr>
    <tr>
      <td>usePushAnimation</td>
      <td>Bool</td>
      <td>Ob der Push beim Anzeigen animiert werden soll.</td>
      <td>true</td>
    </tr>
    <tr>
      <td>titlePushColor</td>
      <td>UIColor?</td>
      <td>Farbe des Benachrichtigungstiteltextes. Standardmäßig Systemweiß, wenn nil.</td>
      <td>white</td>
    </tr>
    <tr>
      <td>messagePushColor</td>
      <td>UIColor?</td>
      <td>Farbe des Benachrichtigungsnachrichtentextes. Standardmäßig Systemweiß, wenn nil.</td>
      <td>white</td>
    </tr>
    <tr>
      <td>titlePushFont</td>
      <td>UIFont?</td>
      <td>Schriftart des Benachrichtigungstiteltextes. Standardmäßig Systemschrift, wenn nil.</td>
      <td>Standard-Systemschriftart</td>
    </tr>
    <tr>
      <td>messagePushFont</td>
      <td>UIFont?</td>
      <td>Schriftart des Benachrichtigungsnachrichtentextes. Standardmäßig Systemschrift, wenn nil.</td>
      <td>Standard-Systemschriftart</td>
    </tr>
  </tbody>
</table>

<Aside type="caution" title="Wichtig">
- Wenn das `useLiquidView`-Flag aktiviert ist, die Systemversion des Benutzers aber niedriger als **iOS 26** ist, wird stattdessen ein regulärer `UIView`-basierter Push angezeigt.
- Wenn Ihr Projekt mit einer Swift-Version **niedriger als 5.13** kompiliert wird, ist der Liquid-Glass-Effekt überhaupt nicht verfügbar – auch nicht auf iOS 26. In diesem Fall wird stattdessen auf allen Geräten eine unscharfe `UIVisualEffectView` (mit `UIBlurEffect`) verwendet.
</Aside>

**Zusammenfassung:**
- Swift 5.13+ + iOS 26 → Liquid Glass
- Swift 5.13+ + iOS < 26 → Standard UIView
- Swift < 5.13 → Immer unscharfe Ansicht (keine Liquid-Glass-Unterstützung)


**Anwendungsbeispiel:**

```swift
Pushwoosh.ForegroundPush.useLiquidView = true
Pushwoosh.ForegroundPush.gradientColors = [.red, .orange, .yellow]
Pushwoosh.ForegroundPush.titlePushColor = .red
Pushwoosh.ForegroundPush.messagePushColor = .green
Pushwoosh.ForegroundPush.backgroundColor = .black
Pushwoosh.ForegroundPush.titlePushFont = .boldSystemFont(ofSize: 22)
Pushwoosh.ForegroundPush.messagePushFont = .italicSystemFont(ofSize: 15)
Pushwoosh.ForegroundPush.usePushAnimation = false
```

### 6. Beispiel für einen Vordergrund-Push

Dieses Beispiel zeigt, wie eine benutzerdefinierte Vordergrund-Push-Benachrichtigung mit `Titel`, `Nachricht`, `Karten` und `GIF-Animation` angezeigt wird.

<figure style={{ textAlign: "center" }}>
  <video src="/ios-foreground-custom-5.webm" title="Example" autoplay loop muted playsinline />
  <figcaption>Pushwoosh Vordergrund-Push mit animierter Liquid-Glass-Ansicht</figcaption>
</figure>

<figure style={{ textAlign: "center" }}>
  <video src="/ios-foreground-custom-1.webm" title="Example" autoplay loop muted playsinline />
  <figcaption>Pushwoosh Vordergrund-Push mit GIF-Anhang</figcaption>
</figure>

<figure style={{ textAlign: "center" }}>
  <video src="/ios-foreground-custom-2.webm" title="Example" autoplay loop muted playsinline />
  <figcaption>Pushwoosh Vordergrund-Push mit Kartenbild</figcaption>
</figure>

<figure style={{ textAlign: "center" }}>
  <video src="/ios-foreground-custom-3.webm" title="Example" autoplay loop muted playsinline />
  <figcaption>Pushwoosh Vordergrund-Push mit benutzerdefiniertem Verlauf und benutzerdefinierten Titel- und Nachrichtenfarben</figcaption>
</figure>

<figure style={{ textAlign: "center" }}>
  <video src="/ios-foreground-custom-4.webm" title="Example" autoplay loop muted playsinline />
  <figcaption>Pushwoosh Vordergrund-Push mit benutzerdefiniertem Hintergrund, Titel- und Nachrichtenschriftarten und ohne Animation</figcaption>
</figure>

Das ist alles. Sie haben erfolgreich benutzerdefinierte Vordergrund-Push-Benachrichtigungen in iOS mit Pushwoosh konfiguriert.