# Verwaltung der Benutzereinwilligung

Pushwoosh unterstützt die Einhaltung von Datenschutzbestimmungen (z. B. DSGVO, CCPA), indem es Entwicklern ermöglicht zu steuern, wann das SDK die Kommunikation mit den Pushwoosh-Servern beginnt. Dies hilft sicherzustellen, dass keine Daten gesammelt werden, bevor der Benutzer seine ausdrückliche Zustimmung gibt.

### Übersicht

Standardmäßig beginnt das Pushwoosh SDK sofort nach der Initialisierung mit der Kommunikation und der Erfassung von Gerätedaten. Sie können dieses Verhalten jedoch so ändern, dass keine Kommunikation stattfindet, bis der Benutzer seine Zustimmung gibt.

Mit dieser Einrichtung:

*   Wenn der Benutzer seine Zustimmung gibt, wird das SDK initialisiert und beginnt mit der Datenerfassung.

*   Wenn der Benutzer seine Zustimmung nicht gibt, bleibt das SDK inaktiv und sammelt keine Daten.

*   Wenn der Benutzer seine Zustimmung später widerruft, stellt das SDK alle Aktivitäten ein und trennt die Verbindung zu den Servern.

Pushwoosh bietet Mechanismen zur Verwaltung dieses Ablaufs in iOS, Android und Unity.

### iOS

#### SDK-Serverkommunikation beim Start deaktivieren

Standardmäßig ist die Kommunikation mit dem SDK aktiviert. Um jegliche Kommunikation mit den Pushwoosh-Servern zu deaktivieren, bis die Zustimmung vom Benutzer explizit erteilt wird, fügen Sie den folgenden Schlüssel zu Ihrer **`Info.plist`** hinzu:

```xml
<key>Pushwoosh_ALLOW_SERVER_COMMUNICATION</key>
<false/>

```

#### Kommunikationsstatus überprüfen

Verwenden Sie die folgenden Methoden, um festzustellen, ob die Kommunikation derzeit erlaubt ist:

<Tabs>
<TabItem label="SwiftUI">

```swift
import SwiftUI
import PushwooshFramework

var serverCommunicationAllowed = PWCoreServerCommunicationManager.sharedInstance.isServerCommunicationAllowed
print("isServerCommunicationAllowed: ", serverCommunicationAllowed)
```
</TabItem>
<TabItem label="Swift">

```swift
import PushwooshFramework

var serverCommunicationAllowed = PWCoreServerCommunicationManager.sharedInstance.isServerCommunicationAllowed
print("isServerCommunicationAllowed: ", serverCommunicationAllowed)
```
</TabItem>
<TabItem label="Objective-C">

```objective-c
#import <PushwooshFramework/PushwooshFramework.h>

BOOL serverCommunicationAllowed = [PWCoreServerCommunicationManager sharedInstance].isServerCommunicationAllowed;
NSLog(@"isServerCommunicationAllowed: %d", serverCommunicationAllowed);
```
</TabItem>
</Tabs>

#### SDK-Kommunikation nach Zustimmung aktivieren

Sobald der Benutzer seine Zustimmung erteilt hat, aktivieren Sie die Kommunikation wie folgt:

<Tabs>
<TabItem label="SwiftUI">

```swift
import SwiftUI
import PushwooshFramework

Pushwoosh.sharedInstance().startServerCommunication()
```
</TabItem>
<TabItem label="Swift">

```swift
import PushwooshFramework

Pushwoosh.sharedInstance().startServerCommunication()
```
</TabItem>
<TabItem label="Objective-C">

```objective-c
#import <PushwooshFramework/PushwooshFramework.h>

[[Pushwoosh sharedInstance] startServerCommunication];
```
</TabItem>
</Tabs>

#### Für Push-Benachrichtigungen registrieren

Sobald die Kommunikation aktiviert ist, registrieren Sie sich explizit für Push-Benachrichtigungen:

<Tabs>
<TabItem label="SwiftUI">

```swift
import SwiftUI
import PushwooshFramework

Pushwoosh.sharedInstance().registerForPushNotifications()
```
</TabItem>
<TabItem label="Swift">

```swift
import PushwooshFramework

Pushwoosh.sharedInstance().registerForPushNotifications()
```
</TabItem>
<TabItem label="Objective-C">

```objective-c
#import <PushwooshFramework/PushwooshFramework.h>

[[Pushwoosh sharedInstance] registerForPushNotifications];
```
</TabItem>
</Tabs>

#### Kommunikation deaktivieren

Um die Kommunikation mit den Pushwoosh-Servern zu beenden (z. B. wenn der Benutzer seine Zustimmung widerruft):

<Tabs>
<TabItem label="SwiftUI">

```swift
import SwiftUI
import PushwooshFramework

Pushwoosh.sharedInstance().stopServerCommunication()
```
</TabItem>
<TabItem label="Swift">

```swift
import PushwooshFramework

Pushwoosh.sharedInstance().stopServerCommunication()
```
</TabItem>
<TabItem label="Objective-C">

```objective-c
#import <PushwooshFramework/PushwooshFramework.h>

[[Pushwoosh sharedInstance] stopServerCommunication];
```
</TabItem>
</Tabs>

### Android

#### SDK-Serverkommunikation beim Start deaktivieren

Standardmäßig ist die Kommunikation aktiviert. Um zu verhindern, dass Daten an die Pushwoosh-Server gesendet werden, bis die Zustimmung des Benutzers eingeholt wurde, fügen Sie Folgendes zu Ihrer `AndroidManifest.xml` hinzu:

```xml
<meta-data
  android:name="com.pushwoosh.allow_server_communication"
  android:value="false" />
```

#### Kommunikationsstatus überprüfen

Verwenden Sie die folgenden Methoden, um festzustellen, ob die Serverkommunikation derzeit erlaubt ist:

<Tabs>
<TabItem label="Java">

```java
import com.pushwoosh.Pushwoosh;

boolean isCommunicationEnabled = Pushwoosh.getInstance().isServerCommunicationAllowed();
Log.d("Pushwoosh", "Communication enabled = " + isCommunicationEnabled);
```
</TabItem>
<TabItem label="Kotlin">

```kotlin
import com.pushwoosh.Pushwoosh

val isCommunicationEnabled = Pushwoosh.getInstance().isServerCommunicationAllowed()
Log.d("Pushwoosh", "Communication enabled = $isCommunicationEnabled")
```
</TabItem>
</Tabs>

#### SDK-Kommunikation nach Zustimmung aktivieren

Sobald der Benutzer seine Zustimmung erteilt hat, aktivieren Sie die Kommunikation wie folgt:

<Tabs>
<TabItem label="Java">

```java
import com.pushwoosh.Pushwoosh;

Pushwoosh.getInstance().startServerCommunication();
```
</TabItem>
<TabItem label="Kotlin">

```kotlin
import com.pushwoosh.Pushwoosh

Pushwoosh.getInstance().startServerCommunication()
```
</TabItem>
</Tabs>

#### Für Push-Benachrichtigungen registrieren

Nachdem die Kommunikation aktiviert ist, registrieren Sie sich explizit für Push-Benachrichtigungen:

<Tabs>
<TabItem label="Java">

```java
import com.pushwoosh.Pushwoosh;

Pushwoosh.getInstance().registerForPushNotifications();
```
</TabItem>
<TabItem label="Kotlin">

```kotlin
import com.pushwoosh.Pushwoosh

Pushwoosh.getInstance().registerForPushNotifications()
```
</TabItem>
</Tabs>

#### Kommunikation deaktivieren

Um die Kommunikation mit den Pushwoosh-Servern zu beenden (z. B. wenn der Benutzer seine Zustimmung widerruft):

<Tabs>
<TabItem label="Java">

```java
import com.pushwoosh.Pushwoosh;

Pushwoosh.getInstance().stopServerCommunication();
```
</TabItem>
<TabItem label="Kotlin">

```kotlin
import com.pushwoosh.Pushwoosh

Pushwoosh.getInstance().stopServerCommunication()
```
</TabItem>
</Tabs>

### Unity

#### SDK-Serverkommunikation beim Start deaktivieren

Standardmäßig ist die Kommunikation mit dem SDK aktiviert. Um jegliche Kommunikation mit den Pushwoosh-Servern zu deaktivieren, bis die Zustimmung vom Benutzer explizit erteilt wird, wenden Sie plattformspezifische Einstellungen an:

**Android**

Fügen Sie Folgendes zu Ihrem Unity-Projekt in `AndroidManifest.xml` hinzu:

```xml
 <meta-data android:name="com.pushwoosh.allow_server_communication" android:value="false" />
```

**iOS**

Ändern Sie `Info.plist`:

```xml
<key>Pushwoosh_ALLOW_SERVER_COMMUNICATION</key>
<false/>
```

**Hinweis:** Sie müssen die Kommunikation aktivieren, bevor Sie `RegisterForPushNotifications` aufrufen.

#### Kommunikationsstatus überprüfen

Verwenden Sie die folgende Methode, um zu überprüfen, ob die Serverkommunikation derzeit erlaubt ist:

```c#
bool enabled = Pushwoosh.Instance.IsCommunicationEnabled();
```

#### SDK-Kommunikation nach Zustimmung aktivieren

Um die Kommunikation nach Zustimmung zu aktivieren:

```c#
Pushwoosh.Instance.SetCommunicationEnabled(true);
```

#### Für Push-Benachrichtigungen registrieren

Sobald die Kommunikation aktiviert ist, können Sie das Gerät für Push-Benachrichtigungen registrieren:

```c#
Pushwoosh.Instance.RegisterForPushNotifications();
```

#### Kommunikation deaktivieren
Um die Kommunikation mit den Pushwoosh-Servern zu beenden (z. B. wenn der Benutzer seine Zustimmung widerruft):

```c#
Pushwoosh.Instance.SetCommunicationEnabled(false);
```

### Web Push

#### Automatisches Abonnement beim Start deaktivieren

Standardmäßig zeigt das Pushwoosh SDK die native Abonnement-Aufforderung an, sobald es initialisiert wird. Um zu verhindern, dass das SDK die Abonnement-Aufforderung bei der Initialisierung automatisch anzeigt, setzen Sie den Parameter `communicationEnabled` im `init`-Aufruf auf `false`.

```html
<script type="text/javascript" src="//cdn.pushwoosh.com/webpush/v3/pushwoosh-web-notifications.js" async></script>
<script type="text/javascript">
  var Pushwoosh = Pushwoosh || [];
  Pushwoosh.push(['init', {
    // other initialization parameters...
    communicationEnabled: false, // Disable communication to prevent automatic subscription prompts
  }]);
</script>
```

#### Abonnement nach Zustimmung aktivieren

Sobald Sie das automatische Abonnement deaktiviert haben, können Sie den Benutzer jederzeit zum Abonnieren auffordern. Wenn der Benutzer zustimmt, Push-Benachrichtigungen zu erhalten (z. B. durch Klicken auf eine "Abonnieren"-Schaltfläche in Ihrer benutzerdefinierten Benutzeroberfläche), können Sie die Kommunikation durch Aufrufen der `setCommunicationEnabled`-Methode aktivieren. Der Aufruf von `Pushwoosh.setCommunicationEnabled(true)` aktiviert die Kommunikation mit den Pushwoosh-Diensten. Sobald aktiviert, zeigt das SDK die native Browser-Berechtigungsaufforderung an.

```javascript
Pushwoosh.setCommunicationEnabled(true)
  .then(() => {
    console.log('User is subscribed to push notifications.');
  })
  .catch((error) => {
    console.error('Error subscribing user:', error);
  });
```

#### Kommunikation deaktivieren

Um die Kommunikation mit den Pushwoosh-Diensten zu beenden (z. B. wenn der Benutzer seine Zustimmung widerruft), rufen Sie `setCommunicationEnabled` mit `false` auf.

```javascript
Pushwoosh.setCommunicationEnabled(false);
```