# iOS SDK: Häufig gestellte Fragen

### FAQ zur iOS-Integration

#### F: Wie kann ich das Pushwoosh SDK in mein iOS-Projekt installieren?
Sie können das Pushwoosh SDK entweder mit dem Swift Package Manager oder mit CocoaPods integrieren.

#### F: Wie installiere ich das Pushwoosh SDK mit dem Swift Package Manager?
Navigieren Sie in Xcode zum Abschnitt **Package Dependencies** und fügen Sie das Paket über die folgende URL hinzu: `https://github.com/Pushwoosh/Pushwoosh-XCFramework`.

#### F: Wie installiere ich das Pushwoosh SDK mit CocoaPods?
Öffnen Sie die `Podfile`-Datei Ihres Projekts und fügen Sie die Zeile `pod 'PushwooshXCFramework'` hinzu. Führen Sie dann den Befehl `pod install` im Terminal aus.

#### F: Welche Capabilities muss ich meinem Projekt hinzufügen, um Push-Benachrichtigungen zu aktivieren?
Im Abschnitt „Signing & Capabilities“ Ihrer Projekteinstellungen müssen Sie die Capabilities `Push Notifications` und `Background Modes` hinzufügen. Wenn Sie `Background Modes` hinzufügen, stellen Sie sicher, dass Sie das Kontrollkästchen für `Remote notifications` aktivieren.

#### F: Welche zusätzliche Capability wird für zeitkritische Benachrichtigungen (Time Sensitive Notifications) benötigt?
Wenn Sie zeitkritische Benachrichtigungen (iOS 15+) verwenden möchten, müssen Sie auch die Capability `Time Sensitive Notifications` hinzufügen.

#### F: Wo muss ich den Initialisierungscode von Pushwoosh hinzufügen?
Der Initialisierungscode muss zu Ihrer `AppDelegate`-Klasse hinzugefügt werden.

#### F: Welchen Initialisierungscode sollte ich in der AppDelegate von SwiftUI hinzufügen?
Bitte beachten Sie das [bereitgestellte Swift-Codebeispiel zur Integration von Pushwoosh in einem SwiftUI-Projekt](/de/developer/pushwoosh-sdk/ios-sdk/setting-up-pushwoosh-ios-sdk/basic-integration-guide/#appdelegate).


#### F: Welchen Initialisierungscode sollte ich in einer Standard-Swift-AppDelegate hinzufügen?
Bitte beachten Sie das [bereitgestellte Swift-Codebeispiel zur Integration von Pushwoosh in einem Standard-Swift-Projekt](/de/developer/pushwoosh-sdk/ios-sdk/setting-up-pushwoosh-ios-sdk/basic-integration-guide/#appdelegate).

#### F: Welchen Initialisierungscode sollte ich in einer Objective-C-AppDelegate hinzufügen?
Bitte beachten Sie das [bereitgestellte Objective-C-Codebeispiel zur Integration von Pushwoosh in einem Objective-C-Projekt](/de/developer/pushwoosh-sdk/ios-sdk/setting-up-pushwoosh-ios-sdk/basic-integration-guide/#appdelegate).

#### F: Welche Schlüssel muss ich meiner Info.plist-Datei hinzufügen?
Sie müssen den Schlüssel `Pushwoosh_APPID`, der auf Ihren Application Code gesetzt ist, und den Schlüssel `PW_API_TOKEN`, der auf Ihr API Token gesetzt ist, in der `Info.plist`-Datei Ihrer App hinzufügen.

#### F: Was ist der Zweck der Nachrichten-Zustellungsverfolgung?
Pushwoosh unterstützt die Verfolgung von Zustellungsereignissen für Push-Benachrichtigungen mithilfe der Notification Service Extension.

#### F: Wie füge ich eine Notification Service Extension zu meinem Projekt hinzu?
Gehen Sie in Xcode zu **File** > **New** > **Target...**, wählen Sie **Notification Service Extension** und drücken Sie **Next**. Geben Sie einen Zielnamen ein und drücken Sie **Finish**. Wenn Sie zur Aktivierung aufgefordert werden, drücken Sie **Cancel**.

#### F: Wie füge ich das Pushwoosh SDK zur Notification Service Extension hinzu?
Fügen Sie das [bereitgestellte Swift- oder Objective-C-Code-Snippet](/de/developer/pushwoosh-sdk/ios-sdk/setting-up-pushwoosh-ios-sdk/basic-integration-guide/#add-pushwoosh-sdk-to-notification-service-extension) zur Haupt-`.swift`- oder `.m`-Datei Ihrer Notification Service Extension hinzu. Dieser Code verwendet `PWNotificationExtensionManager`, um die Benachrichtigungsanfrage zu bearbeiten.

#### F: Was ist der Zweck von App Groups?
Die App Groups-Capability ist erforderlich, damit die Notification Service Extension mit der Hauptanwendung kommunizieren kann.

#### F: Wie aktiviere ich App Groups für mein Hauptziel und die Notification Service Extension?
Gehen Sie für beide Ziele zu **Signing & Capabilities**, fügen Sie die **App Groups**-Capability hinzu und erstellen Sie eine neue Gruppe, indem Sie auf die Schaltfläche + klicken. Stellen Sie sicher, dass der Gruppenname mit `group.` beginnt und verwenden Sie für beide Ziele denselben Gruppennamen.

#### F: Welche Schlüssel muss ich der Info.plist meines Hauptziels für App Groups hinzufügen?
Fügen Sie in der `Info.plist` Ihres Hauptziels den Schlüssel `PW_APP_GROUPS_NAME` hinzu und setzen Sie dessen Wert auf den Namen Ihrer App Groups-Gruppe.

#### F: Welche Schlüssel muss ich der Info.plist meiner Notification Service Extension hinzufügen?
Fügen Sie in der `Info.plist` Ihrer Notification Service Extension den Schlüssel `PW_APP_GROUPS_NAME` (gesetzt auf Ihren App Groups-Namen) und den Schlüssel `Pushwoosh_APPID` (gesetzt auf Ihren Application Code) hinzu.

#### F: Wie überprüfe ich die Pushwoosh-Integration?
Nachdem Sie Ihr Projekt erstellt und ausgeführt haben, gehen Sie zum Pushwoosh Control Panel und senden Sie eine Push-Benachrichtigung an Ihre Anwendung. Sie sollten die Benachrichtigung auf Ihrem Gerät sehen.

#### F: Was sind die beiden Haupt-Callbacks zur Verarbeitung von Push-Benachrichtigungen im Pushwoosh SDK?
Die beiden Haupt-Callbacks sind `onMessageReceived` und `onMessageOpened`.

#### F: Wann wird der `onMessageReceived`-Callback aufgerufen?
Die `onMessageReceived`-Methode wird aufgerufen, wenn eine Push-Benachrichtigung von der Anwendung empfangen wird.

#### F: Wann wird der `onMessageOpened`-Callback aufgerufen?
Die `onMessageOpened`-Methode wird aufgerufen, wenn der Benutzer mit einer Push-Benachrichtigung interagiert und diese öffnet.

#### F: Wie kann ich auf die Payload einer empfangenen oder geöffneten Push-Benachrichtigung zugreifen?
Auf die Payload eines `PWMessage`-Objekts (das an die `onMessageReceived`- und `onMessageOpened`-Callbacks übergeben wird) kann über dessen `payload`-Eigenschaft zugegriffen werden.

#### F: Wie kann ich eine Benutzer-ID in Pushwoosh festlegen?
Verwenden Sie die `setUserId(_:)`-Methode des `Pushwoosh.sharedInstance()`-Objekts und übergeben Sie die ID des Benutzers als Argument.

#### F: Wie kann ich die E-Mail-Adresse eines Benutzers in Pushwoosh festlegen?
Verwenden Sie die `setEmail(_:)`-Methode des `Pushwoosh.sharedInstance()`-Objekts und geben Sie die E-Mail des Benutzers an.

#### Wie kann ich zusätzliche Benutzerinformationen als Tags in Pushwoosh festlegen?
Verwenden Sie die `setTags(_:)`-Methode des `Pushwoosh.sharedInstance()`-Objekts und übergeben Sie ein Dictionary, bei dem die Schlüssel die Tag-Namen und die Werte die entsprechenden Tag-Werte sind.

#### Wie kann ich ein Benutzerereignis mit zusätzlichen Attributen verfolgen?**
Verwenden Sie die `postEvent(_:withAttributes:)`-Methode von `PWInAppManager.shared()` und geben Sie den Ereignisnamen (z. B. `"login"`) und ein Dictionary mit Attributen (z. B. `"name"`, `"last_login"`) an.

#### F: Wie kann ich ein Kaufereignis eines Benutzers mit Produktdetails verfolgen?
Verwenden Sie die `postEvent(_:withAttributes:)`-Methode von `PWInAppManager.shared()` mit dem Ereignisnamen `"purchase"` und einem Dictionary, das Produktdetails wie `"product_id"`, `"product_name"`, `"price"` und `"quantity"` enthält.

#### F: Wie richte ich einen Delegate zur Handhabung der Rich-Media-Präsentation ein?
Konformieren Sie in Ihrem View Controller oder einer anderen geeigneten Klasse mit dem `PWRichMediaPresentingDelegate`-Protokoll und setzen Sie die `delegate`-Eigenschaft von `PWRichMediaManager.shared()` auf Ihre konforme Instanz.

#### F: Wie kann ich den Präsentationsstil von Rich Media konfigurieren?
Verwenden Sie das `PWModalWindowConfiguration.shared()`-Objekt, um Eigenschaften wie die Position des modalen Fensters und die Präsentations-/Ausblendungsanimationen mit der `configureModalWindow(with:present:dismiss:)`-Methode zu konfigurieren.

#### F: Auf welche Informationen kann ich in den Rich-Media-Delegate-Methoden zugreifen?**
Die Delegate-Methoden bieten Zugriff auf das `PWRichMedia`-Objekt, das Informationen über den Rich-Media-Inhalt enthält, einschließlich seiner `pushPayload`. Die `presentingDidFailForRichMedia:withError:`-Methode stellt auch ein `Error`-Objekt bereit, das den Fehler beschreibt.


### Fehlerbehebung

<Aside type="caution">
Zu Lastausgleichszwecken müssen wir möglicherweise die API-Endpunkte in Ihrer Anwendung ändern. Dies geschieht automatisch und wird von unserem SDK gehandhabt. **Bitte stellen Sie sicher, dass nichts in Ihrer App den Zugriff auf URLs blockiert, die \*.pushwoosh.com enthalten.**
</Aside>

<Aside type="note">
#### Wenn Sie sich hinter einer Firewall befinden oder Ihr WLAN-Router als Firewall fungiert

Wenn Ihr Gerät über WLAN mit dem Internet verbunden ist und Nachrichten nicht auf dem Gerät ankommen, **stellen Sie bitte sicher, dass die APNs-Ports nicht von Ihrer Firewall blockiert werden.**\
Push-Anbieter, iOS-Geräte und Mac-Computer befinden sich oft hinter Firewalls. Um Benachrichtigungen zu senden, müssen Sie eingehende und ausgehende TCP-Pakete über Port 2195 zulassen. Geräte und Computer, die sich über **WLAN** mit dem Push-Dienst verbinden, müssen eingehende und ausgehende TCP-Pakete über Port 5223 zulassen.\
Der IP-Adressbereich für den Push-Dienst kann sich ändern; es wird erwartet, dass sich Anbieter über den Hostnamen und nicht über die IP-Adresse verbinden. Der Push-Dienst verwendet ein Lastausgleichsschema, das für denselben Hostnamen eine andere IP-Adresse liefert. Der gesamte Adressblock 17.0.0.0/8 ist jedoch Apple zugewiesen, sodass Sie diesen Bereich in Ihren Firewall-Regeln angeben können.
</Aside>

#### F: Fehler „Your provisioning profile does not have APS entry“

Wenn Sie die Fehlermeldung „Your provisioning profile does not have APS entry.“ sehen, stellen Sie sicher, dass Ihr Provisioning Profile Push-kompatibel ist und die Zeichenfolge `aps-environment` mit dem Wert `production` oder `development` enthält. Am einfachsten können Sie dies überprüfen, indem Sie das mobile Provisioning Profile in einem beliebigen Texteditor öffnen und nach der Zeichenfolge `aps-environment` suchen. Sie sollte dort vorhanden sein.

Wenn dies der Fall ist und Sie den Fehler weiterhin erhalten, bedeutet dies, dass XCode immer noch ein „nicht Push-kompatibles“ Profil auswählt. Bitte stellen Sie sicher, dass Sie mit dem richtigen signieren – manchmal, wenn Sie zwei Profile für dieselbe App ID haben, bringt XCode die Dinge durcheinander und signiert mit dem alten.

Die empfohlenen Schritte sind:

1. [Entfernen](https://stackoverflow.com/questions/18923095/delete-provisioning-profile-from-xcode-5) Sie alle XCode-Profile;
2. Fügen Sie das eine und einzige neue Profil hinzu;
3. Erstellen Sie die App neu.

#### F: Wie sehen ein iOS Push-Token und eine HWID aus?

iOS-Geräte-Push-Token sind Zeichenfolgen mit 64 hexadezimalen Symbolen. Beispiel für ein Push-Token:\
`03df25c845d460bcdad7802d2vf6fc1dfde97283bf75cc993eb6dca835ea2e2f`\
Stellen Sie sicher, dass die iOS-Push-Token, die Sie bei der gezielten Ansprache bestimmter Geräte in Ihren API-Anfragen verwenden, in **Kleinschreibung** sind.

Pushwoosh verwendet IDFV als Geräte-HWID. Beachten Sie, dass sich diese ändern kann, falls ein Benutzer alle Apps eines bestimmten Anbieters neu installiert.

`CBAF8ED1-17FB-49A3-73BD-DC79B63AEF93`

#### F: Wie schalte ich das Banner ein und aus, während meine App läuft?

Standardmäßig zeigt unser neuestes iOS SDK das Benachrichtigungsbanner an, wenn die App im Vordergrund läuft.\
Sie können dieses Verhalten steuern, indem Sie die folgenden Flags in der Info.plist ändern:

Flag `Pushwoosh_ALERT_TYPE` – Typ String, Werte sind:

* `BANNER` – Standardwert, zeigt Banner-In-App-Benachrichtigung an
* `ALERT` – Alert-Benachrichtigung
* `NONE` – keine Benachrichtigungen anzeigen, wenn die App im Vordergrund ist

#### F: Wie erhalte ich mein iOS-Geräte-Push-Token zur Verwendung in Testgeräten?

Um Ihr iOS-Geräte-Push-Token zu erhalten,

1. Öffnen Sie Xcode => Devices & Simulators;
2. Verbinden Sie das Testgerät mit Ihrem Computer;
3. Wählen Sie Ihr verbundenes Gerät in der Liste der Geräte auf der linken Seite aus;
4. Klicken Sie auf die Schaltfläche „Open Console“.

<img src="/ios-push-notifications-ios-faq-1.webp" alt=""/>

Starten Sie die Anwendung, für die Sie das Geräte-Push-Token benötigen, und finden Sie Ihr 64-stelliges hexadezimales Geräte-Push-Token in der Zeile „Registered for push notifications“:

<img src="/ios-push-notifications-ios-faq-2.webp" alt=""/>

#### F: Warum werden Badges nicht gelöscht, nachdem ich meine App deinstalliert und kurz darauf neu installiert habe?

Dies ist ein erwartetes Verhalten – Badges werden von iOS selbst gehandhabt und ihre Werte werden in den Anwendungseinstellungen gespeichert, die nicht sofort entfernt werden, wenn Sie Ihre App deinstallieren. Ein Badge-Wert bleibt bei einer sofortigen Neuinstallation für einige Zeit erhalten, was dazu führt, dass nach der Neuinstallation der App dieselben Badges angezeigt werden.