# Gestion du consentement de l'utilisateur

Pushwoosh prend en charge la conformité avec les réglementations sur la confidentialité (par ex., RGPD, CCPA) en permettant aux développeurs de contrôler quand le SDK commence la communication avec les serveurs de Pushwoosh. Cela permet de s'assurer qu'aucune donnée n'est collectée avant que l'utilisateur ne donne son consentement explicite.

### Aperçu

Par défaut, le SDK Pushwoosh commence la communication et la collecte des données de l'appareil dès son initialisation. Cependant, vous pouvez modifier ce comportement afin qu'aucune communication n'ait lieu tant que l'utilisateur n'a pas donné son consentement.

Avec cette configuration :

*   Si l'utilisateur donne son consentement, le SDK s'initialise et commence à collecter des données.

*   Si l'utilisateur ne donne pas son consentement, le SDK reste inactif et ne collecte aucune donnée.

*   Si l'utilisateur retire ultérieurement son consentement, le SDK arrête toute activité et se déconnecte des serveurs.

Pushwoosh fournit des mécanismes pour gérer ce flux sur iOS, Android et Unity.

### iOS

#### Désactiver la communication du SDK avec le serveur au démarrage

Par défaut, la communication avec le SDK est activée. Pour désactiver toute communication avec les serveurs de Pushwoosh jusqu'à ce que le consentement soit explicitement accordé par l'utilisateur, ajoutez la clé suivante à votre **`Info.plist`** :

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

```

#### Vérifier l'état de la communication

Utilisez les méthodes suivantes pour déterminer si la communication est actuellement autorisée :

<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>

#### Activer la communication du SDK après le consentement

Une fois que l'utilisateur a donné son consentement, activez la communication comme suit :

<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>

#### S'inscrire aux notifications push

Une fois la communication activée, inscrivez-vous explicitement aux notifications push :

<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>

#### Désactiver la communication

Pour arrêter la communication avec les serveurs de Pushwoosh (par ex., si l'utilisateur révoque son consentement) :

<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

#### Désactiver la communication du SDK avec le serveur au démarrage

Par défaut, la communication est activée. Pour empêcher l'envoi de données aux serveurs de Pushwoosh jusqu'à l'obtention du consentement de l'utilisateur, ajoutez ce qui suit à votre `AndroidManifest.xml` :

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

#### Vérifier l'état de la communication

Utilisez les méthodes suivantes pour déterminer si la communication avec le serveur est actuellement autorisée :

<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>

#### Activer la communication du SDK après le consentement

Une fois que l'utilisateur a donné son consentement, activez la communication comme suit :

<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>

#### S'inscrire aux notifications push

Après l'activation de la communication, inscrivez-vous explicitement aux notifications push :

<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>

#### Désactiver la communication

Pour arrêter la communication avec les serveurs de Pushwoosh (par ex., si l'utilisateur révoque son consentement) :

<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

#### Désactiver la communication du SDK avec le serveur au démarrage

Par défaut, la communication avec le SDK est activée. Pour désactiver toute communication avec les serveurs de Pushwoosh jusqu'à ce que le consentement soit explicitement accordé par l'utilisateur, appliquez les paramètres spécifiques à la plateforme :

**Android**

Ajoutez ce qui suit à votre projet Unity dans `AndroidManifest.xml` :

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

**iOS**

Modifiez `Info.plist` :

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

**Remarque :** Vous devez activer la communication avant d'appeler `RegisterForPushNotifications`.

#### Vérifier l'état de la communication

Utilisez la méthode suivante pour vérifier si la communication avec le serveur est actuellement autorisée :

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

#### Activer la communication du SDK après le consentement

Pour activer la communication après le consentement :

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

#### S'inscrire aux notifications push

Une fois la communication activée, vous pouvez inscrire l'appareil aux notifications push :

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

#### Désactiver la communication

Pour arrêter la communication avec les serveurs de Pushwoosh (par ex., si l'utilisateur révoque son consentement) :

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

### Web Push

#### Désactiver l'abonnement automatique au démarrage

Par défaut, le SDK Pushwoosh affiche l'invite d'abonnement native dès qu'il est initialisé. Pour empêcher le SDK d'afficher automatiquement l'invite d'abonnement lors de l'initialisation, définissez le paramètre `communicationEnabled` sur `false` dans l'appel `init`.

```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>
```

#### Activer l'abonnement après le consentement

Une fois que vous avez désactivé l'abonnement automatique, vous pouvez inviter l'utilisateur à s'abonner à tout moment. Lorsque l'utilisateur accepte de recevoir des notifications push (par exemple, en cliquant sur un bouton « S'abonner » sur votre interface utilisateur personnalisée), vous pouvez activer la communication en appelant la méthode `setCommunicationEnabled`. L'appel de `Pushwoosh.setCommunicationEnabled(true)` active la communication avec les services Pushwoosh. Une fois activée, le SDK affichera l'invite d'autorisation native du navigateur.

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

#### Désactiver la communication

Pour arrêter la communication avec les services Pushwoosh (par ex., si l'utilisateur révoque son consentement), appelez `setCommunicationEnabled` avec `false`.

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