# ID d'appareil persistant (Keychain)

Le module `PushwooshKeychain` fournit une identification d'appareil persistante (HWID) qui survit à la réinstallation de l'application. Ceci est utile pour les scénarios de test et de développement où vous devez conserver la même identité d'appareil même après avoir réinstallé l'application.

<Aside type="note">
Disponible à partir de la **version 7.0.16 du SDK**.
</Aside>

## Comment ça marche

Par défaut, iOS génère un nouvel `identifierForVendor` (IDFV) chaque fois qu'une application est réinstallée, ce qui entraîne l'enregistrement d'un nouveau HWID auprès de Pushwoosh. Le module `PushwooshKeychain` stocke le HWID dans le Keychain iOS, qui persiste lors des réinstallations de l'application.

### Détection de l'environnement

Le module détecte automatiquement l'environnement de l'application et se comporte différemment :

| Environnement | HWID persistant |
|---------------|-----------------|
| Simulateur | Activé |
| Débogage/Développement | Activé |
| TestFlight | Activé |
| App Store | **Désactivé** |

<Aside type="caution" title="Important">
Le module est **automatiquement désactivé** dans les builds de l'App Store pour des raisons de conformité à la vie privée. Cela garantit que les utilisateurs en production obtiennent toujours un nouveau HWID lorsqu'ils réinstallent votre application.

Si vous préférez ne pas inclure du tout ce module dans votre application de production, vous pouvez supprimer en toute sécurité `PushwooshKeychain` de votre configuration de build de production ou utiliser une liaison conditionnelle pour les builds de Débogage/TestFlight uniquement.
</Aside>

## Installation

### Swift Package Manager

Ajoutez `PushwooshKeychain` à votre cible lors de l'intégration du SDK Pushwoosh :

1. Dans Xcode, allez dans **Fichier → Ajouter des dépendances de paquets**
2. Saisissez l'URL du paquet : `https://github.com/Pushwoosh/Pushwoosh-XCFramework`
3. Sélectionnez `PushwooshKeychain` en plus des frameworks requis

<Tabs>
<TabItem label="Frameworks requis">
* `PushwooshFramework`
* `PushwooshCore`
* `PushwooshBridge`
</TabItem>
<TabItem label="Frameworks optionnels">
* `PushwooshKeychain` — ID d'appareil persistant
* `PushwooshLiveActivities` — Prise en charge des Live Activities
* `PushwooshVoIP` — Notifications push VoIP
* `PushwooshForegroundPush` — Notifications personnalisées au premier plan
</TabItem>
</Tabs>

### CocoaPods

Ajoutez le sous-spec Keychain à votre `Podfile` :

```ruby
target 'MyApp' do
  use_frameworks!

  pod 'PushwooshXCFramework'
  pod 'PushwooshXCFramework/PushwooshKeychain'
end
```

Puis exécutez :

```bash
pod install
```

## Utilisation

**Aucune modification de code n'est requise.** Une fois que vous avez ajouté le module `PushwooshKeychain` à votre projet, il fonctionne automatiquement :

1. Au premier lancement de l'application, le module génère un HWID et le stocke dans le Keychain
2. Lors des lancements ultérieurs (y compris après réinstallation), le module récupère le HWID stocké
3. Le SDK utilise ce HWID persistant pour l'enregistrement de l'appareil auprès de Pushwoosh

## Cas d'utilisation

Le module `PushwooshKeychain` est particulièrement utile pour :

- **Tests d'assurance qualité** — Maintenir la même identité d'appareil à travers plusieurs installations de l'application pendant les tests
- **Développement** — Garder un ciblage d'appareil cohérent tout en itérant sur votre application
- **Tests bêta avec TestFlight** — Suivre les mêmes bêta-testeurs à travers les mises à jour et les réinstallations de l'application

<Aside type="tip">
Comme le module est désactivé dans les builds de l'App Store, vous n'avez pas besoin de l'inclure de manière conditionnelle — il est sûr de le livrer avec votre application de production.
</Aside>

## Dépannage

### Vérifier que le module est actif

Vérifiez les journaux de la console Xcode au lancement de votre application. Vous devriez voir un message de journal comme celui-ci :

```
[Pushwoosh] Detected environment: Debug. Persistent HWID: ENABLED
```

ou

```
[Pushwoosh] Detected environment: App Store. Persistent HWID: DISABLED
```

### Effacer le HWID stocké

Si vous avez besoin de réinitialiser le HWID persistant pendant le développement, vous pouvez appeler :

<Tabs>
<TabItem label="Swift">
```swift
import PushwooshFramework

// Efface le HWID stocké du Keychain
Pushwoosh.Keychain.clearPersistentHWID()
```
</TabItem>
<TabItem label="Objective-C">
```objective-c
@import PushwooshFramework;

// Efface le HWID stocké du Keychain
[Pushwoosh.Keychain clearPersistentHWID];
```
</TabItem>
</Tabs>

<Aside type="note">
Après l'effacement, le prochain lancement de l'application générera et stockera un nouveau HWID.
</Aside>