> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration du SDK Huawei

> Guide de configuration du SDK OneSignal Huawei pour Android Studio.

## Aperçu

Ce guide explique comment intégrer les notifications push OneSignal dans une application Huawei distribuée sur le Huawei AppGallery.

Ces instructions sont destinées aux applications natives écrites en Java ou Kotlin. Pour les autres SDK pris en charge, consultez :

<Columns cols={2}>
  <Card title="Ionic/Cordova/Capacitor" href="./huawei-cordova-sdk-setup" arrow={true} />

  <Card title="Flutter" href="./huawei-flutter-sdk-setup" arrow={true} />

  <Card title="React Native" href="./huawei-react-native-sdk-setup" arrow={true} />

  <Card title="Unity" href="./huawei-unity-sdk-setup" arrow={true} />
</Columns>

***

## Prérequis

* [Android Studio](https://developer.android.com/studio)
* Un appareil Huawei avec "Huawei App Gallery" installé
* Application et plateforme OneSignal configurées

***

### Configurer votre application OneSignal et votre plateforme

Configurez votre application OneSignal avec les plateformes que vous prenez en charge — Apple (APNs), Google (FCM), Huawei (HMS) et/ou Amazon (ADM).

<Note>
  Si votre organisation possède déjà un compte OneSignal, [demandez à être invité](/docs/en/manage-team-members) à l'Organisation. Sinon, [inscrivez-vous pour un compte gratuit](https://onesignal.com) pour commencer.
</Note>

<Accordion title="Instructions de configuration étape par étape" icon="circle-chevron-down">
  <Steps>
    <Step title="Créer ou sélectionner votre application">
      Créez une nouvelle application en cliquant sur **New App/Website**, ou ajoutez une plateforme à une application existante dans **Settings > Push & In-App**. Sélectionnez la ou les plateformes que vous souhaitez configurer et cliquez sur **Next: Configure Your Platform**.

      <Frame caption="Configuration de votre première application, organisation et canal OneSignal.">
        <img src="https://mintcdn.com/onesignal/BK2J-grzBpDdh8NC/images/dashboard/new-app-org-channel.png?fit=max&auto=format&n=BK2J-grzBpDdh8NC&q=85&s=ee0045484152ed15095f619344aa0564" alt="Tableau de bord OneSignal montrant le flux de configuration de nouvelle application avec le nom de l'organisation, le nom de l'app et la sélection du canal" width="2592" height="1904" data-path="images/dashboard/new-app-org-channel.png" />
      </Frame>
    </Step>

    <Step title="Configurer les identifiants de plateforme">
      Entrez les identifiants pour votre plateforme :

      * **Android** : [Configurer les identifiants Firebase](/docs/en/android-firebase-credentials)
      * **iOS** : [Jeton p8 (Recommandé)](/docs/en/ios-p8-token-based-connection-to-apns) ou [Certificat p12](/docs/en/ios-p12-generate-certificates)
      * **Amazon** : [Générer une clé API](/docs/en/generate-an-amazon-api-key)
      * **Huawei** : [Autoriser OneSignal](/docs/en/authorize-onesignal-to-send-huawei-push)

      Cliquez sur **Save & Continue** après avoir saisi vos identifiants.
    </Step>

    <Step title="Enregistrer votre App ID et installer le SDK">
      Votre **App ID** est affiché sur l'écran final. Copiez et enregistrez-le — vous en avez besoin lors de l'initialisation du SDK. Sélectionnez votre plateforme SDK, puis suivez le guide de configuration.

      <Frame caption="Enregistrez votre App ID et invitez des membres d'équipe supplémentaires.">
        <img src="https://mintcdn.com/onesignal/VypVshrFHTBZfEma/images/dashboard/app-id-and-team-invite.png?fit=max&auto=format&n=VypVshrFHTBZfEma&q=85&s=e1e2aab6cca7c4aa6b9a76eff362d5af" alt="Tableau de bord OneSignal montrant l'App ID et l'option d'invitation d'équipe après la configuration" width="2592" height="1904" data-path="images/dashboard/app-id-and-team-invite.png" />
      </Frame>
    </Step>
  </Steps>
</Accordion>

***

## Configuration

### 1. Configuration du SDK OneSignal

<Card title="Configuration du SDK OneSignal Android" href="./android-sdk-setup" arrow={true}>
  Suivez le guide de configuration du SDK OneSignal Android pour implémenter notre SDK dans votre application.
  Notez que la configuration Firebase/Google n'est pas requise pour les versions d'application publiées sur le Huawei AppGallery.
</Card>

### 2. Configuration Huawei (agconnect-services.json)

<Info>
  Vous pouvez ignorer cette étape si vous avez déjà un fichier Huawei `agconnect-services.json` dans votre projet Android Studio suite à la configuration d'un autre service Huawei.
</Info>

Depuis la [Liste des projets AppGallery Connect](https://developer.huawei.com/consumer/en/service/josp/agc/index.html#/myProject), sélectionnez votre application.

Cliquez sur le bouton "agconnect-services.json" pour télécharger ce fichier.

<Frame>
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b4f866d-Huawei_AppGallery_Connect_ProjectSettings_Download_agconnect-services.json_file.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=0d2a452e3c007ce4a63fa3ed50204a32" width="1262" height="696" data-path="images/docs/b4f866d-Huawei_AppGallery_Connect_ProjectSettings_Download_agconnect-services.json_file.png" />
</Frame>

Placez ce fichier dans votre répertoire app dans Android Studio.

<Frame>
  <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/5a9ee3b-Huawei_AndroidStudio_agconnect-services.json_file.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=6c9e6eb15b63c4089b959e3652b9b695" width="362" height="326" data-path="images/docs/5a9ee3b-Huawei_AndroidStudio_agconnect-services.json_file.png" />
</Frame>

### 3. Génération d'une empreinte de certificat de signature

<Info>
  Vous pouvez ignorer cette étape si vous avez déjà ajouté votre empreinte de certificat SHA-256 au tableau de bord de Huawei pour un autre service Huawei.
</Info>

Depuis votre Android Studio, allez dans **View > Tool Windows > Gradle**.

<Frame>
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/092273b-Huawei_AndroidStudio_Open_Gradle_Tasks_List.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=6a59f3f7060ee0d384c281e234c92f17" width="595" height="358" data-path="images/docs/092273b-Huawei_AndroidStudio_Open_Gradle_Tasks_List.png" />
</Frame>

Ici, sélectionnez **app > Tasks > android > signingReport**.

<Frame>
  <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/db2ecdd-Huawei_AndroidStudio_Run_signingReport.png?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=d239877b38edbdf268dce6c999726fb0" width="294" height="216" data-path="images/docs/db2ecdd-Huawei_AndroidStudio_Run_signingReport.png" />
</Frame>

Copiez votre `SHA-256` pour votre variante `release`.

* Optionnel mais recommandé pour des tests plus rapides : le `SHA-256` pour votre variante `debug` également.
* Vous pouvez avoir d'autres variantes personnalisées dans votre projet. Si vous avez besoin du support push pour elles, copiez-les également.

<Frame>
  <img src="https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/f6b08a6-Huawei_AndroidStudio_signingReport_output.png?fit=max&auto=format&n=KSCNwSpBCNSQ8xdF&q=85&s=05d59af3ed44175b67778fa8d0c4cf8f" width="798" height="346" data-path="images/docs/f6b08a6-Huawei_AndroidStudio_signingReport_output.png" />
</Frame>

Depuis la [Liste des projets AppGallery Connect](https://developer.huawei.com/consumer/en/service/josp/agc/index.html#/myProject), sélectionnez votre application.

Faites défiler vers le bas pour trouver le champ "SHA-256 certificate fingerprint" où vous devez entrer vos clés.

<Frame>
  <img src="https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9bf59ea-Huawei_AppGallery_Connect_SHA256_cert_fingerprint.png?fit=max&auto=format&n=6tscVAtiSqz353kV&q=85&s=e3b1c87ac0ec02d95e60fa115f8f51a2" width="1292" height="622" data-path="images/docs/9bf59ea-Huawei_AppGallery_Connect_SHA256_cert_fingerprint.png" />
</Frame>

### 4. Ajouter le plugin gradle Huawei et les dépendances

<Tabs>
  <Tab title="Groovy + AGP 7.x">
    Ouvrez votre fichier racine `build.gradle` (Project: ) dans Android Studio et ajoutez ` maven {url 'https://developer.huawei.com/repo/'}` sous `buildscript { repositories }` et `allprojects { repositories }`
  </Tab>

  <Tab title="Kotlin + AGP 8.x">
    Ouvrez votre fichier `settings.gradle.kts` et ajoutez `maven {url 'https://developer.huawei.com/repo/'}` sous `pluginManagement { repositories }` et `dependencyResolutionManagement { repositories }`
  </Tab>
</Tabs>

Sous `buildscript { dependencies }`, ajoutez `classpath 'com.huawei.agconnect:agcp:1.9.1.301'`

Vous devriez avoir au total 3 nouvelles lignes dans votre fichier racine `build.gradle`, surlignées ci-dessous.

<Frame>
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d1791d3-Huawei_AndroidStudio_root_build.gradle_file_2.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=b5e3b1016d53fb02c4c7eee1fee75c43" width="941" height="664" data-path="images/docs/d1791d3-Huawei_AndroidStudio_root_build.gradle_file_2.png" />
</Frame>

Ouvrez votre fichier `app/build.gradle` et ajoutez `implementation 'com.huawei.hms:push:6.3.0.304'` sous la section `dependencies`.

Également dans le fichier `app/build.gradle`, ajoutez `apply plugin: 'com.huawei.agconnect'` tout en bas du fichier.

Vous devriez avoir au total 2 nouvelles lignes dans votre `app/build.gradle`, surlignées ci-dessous.

<Tip>
  Assurez-vous d'appuyer sur "Sync Now" dans la bannière qui apparaît après la sauvegarde !
</Tip>

<Frame>
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0b441ec-Huawei_AndroidStudio_sync_now.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=ae87a2d2f8a1b7aaf9fe17208255be4c" width="1033" height="112" data-path="images/docs/0b441ec-Huawei_AndroidStudio_sync_now.png" />
</Frame>

***

## Étapes de configuration supplémentaires

### Compatibilité avec d'autres bibliothèques push HMS ou votre propre classe `HmsMessageService`

Requis si :

* Vous avez un autre SDK/bibliothèque push HMS dans votre application en plus de OneSignal
* Vous avez votre propre `HmsMessageService`

<Accordion title="Plus de détails...">
  Créez une classe qui étend de `HmsMessageService`, si vous n'en avez pas déjà une, et ajoutez les méthodes suivantes.

  <Warning>
    Si vous aviez déjà une classe qui étend `HmsMessageService`, veuillez ajouter les deux
    nouvelles lignes `OneSignalHmsEventBridge` au lieu de créer une autre classe.
  </Warning>

  ```java Java theme={null}
  public class YourHmsMessageService extends HmsMessageService {
    public void onNewToken(String token) {
        // ...
        // Forward event on to OneSignal SDK
        OneSignalHmsEventBridge.onNewToken(this, token);
    }

    @Override
    public void onMessageReceived(RemoteMessage message) {
        // ...
        // Forward event on to OneSignal SDK
        OneSignalHmsEventBridge.onMessageReceived(this, message);
    }
  }
  ```

  Ceci est pour transférer `onNewToken` et `onMessageReceived` à OneSignal via le `OneSignalHmsEventBridge`.

  Si vous n'aviez pas de classe qui étendait `HmsMessageService` auparavant, assurez-vous de l'ajouter à votre `AndroidManifest.xml` sous la balise `<application>`.

  ```xml AndroidManifest.xml theme={null}
  <application>
      ...

      <!--
        Assurez-vous d'avoir un seul intent-filter pour "com.huawei.push.action.MESSAGING_EVENT".
        HMS ne prend en charge qu'un seul par application.
      -->
      <service
          android:name=".YourHmsMessageService"
          android:exported="false">
          <intent-filter>
              <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
          </intent-filter>
      </service>

      ...
  </application>
  ```
</Accordion>

### Omettre les bibliothèques Google pour les builds Huawei AppGallery (optionnel)

<Accordion title="Plus de détails...">
  <Tabs>
    <Tab title="Option 1">
      Si votre application ne sera disponible que sur le Huawei AppGallery et que vous souhaitez omettre toutes les dépendances Google que OneSignal inclut, vous pouvez utiliser `exclude` avec `implementation` dans votre `app/build.gradle`.

      <CodeGroup>
        ```groovy app/build.gradle theme={null}
        implementation('com.onesignal:OneSignal:[5.4.0, 5.99.99]') {
            exclude group: 'com.google.android.gms'
            exclude group: 'com.google.firebase'
        }
        ```
      </CodeGroup>
    </Tab>

    <Tab title="Option 2">
      Si votre application sera à la fois pour le Google Play Store et le Huawei AppGallery et que vous souhaitez être sélectif sur les bibliothèques à inclure pour réduire la taille de votre APK, vous pouvez ajouter des dépendances basées sur les buildTypes ou les variantes. Exemple :

      <CodeGroup>
        ```groovy app/build.gradle theme={null}
        android {
          // ...
           buildTypes {
               debug {
               }
               release {
               }
               // **** Add your custom hauwei buildType here
               huawei {
               }
           }
        }

        dependencies {
        // \*\*\*\* Use the full OneSignal dependencies for Google Play Store builds
        debugImplementation 'com.onesignal:OneSignal:[5.0.0, 5.99.99]'
        releaseImplementation 'com.onesignal:OneSignal:[5.0.0, 5.99.99]'

            // **** Only include hms:push for your Huawei AppGallery builds.
            huaweiImplementation 'com.huawei.hms:push:6.3.0.304'
            // Omit Google / Firebase libraries for Huawei builds.
            huaweiImplementation('com.onesignal:OneSignal:[5.0.0, 5.99.99]') {
                exclude group: 'com.google.android.gms'
                exclude group: 'com.google.firebase'
            }

        }

        ```
      </CodeGroup>
    </Tab>
  </Tabs>
</Accordion>

### Préférer HMS plutôt que FCM (optionnel)

<Accordion title="Plus de détails...">
  ***Si vous avez [omis les bibliothèques Google](./huawei-sdk-setup#omettre-les-bibliotheques-google-pour-les-builds-huawei-appgallery-optionnel) pour le build Huawei AppGallery ci-dessus, cette étape ne s'applique pas.***

  Par défaut, OneSignal préfère utiliser FCM plutôt que HMS si les deux sont inclus dans votre application. Si vous souhaitez modifier cela pour préférer HMS, vous pouvez ajouter ce qui suit à votre `AndroidManifest.xml` :

  <CodeGroup>
    ```xml xml theme={null}
    <application>
            ...
            <meta-data android:name="com.onesignal.preferHMS" android:value="true"/>
            ...
     </application>
    ```
  </CodeGroup>
</Accordion>

***

## Dépannage Huawei

Lors des tests, assurez-vous de conserver la [méthode OneSignal setLogLevel](./mobile-sdk-reference#setloglevel) définie sur VERBOSE.

Vérifiez les journaux pour voir les erreurs générées et consultez les [Codes d'erreur courants Huawei](https://developer.huawei.com/consumer/en/doc/development/HMS-2-References/hmssdk_huaweipush_api_reference_errorcode).

<Accordion title="Erreur 6003">
  Vous devrez peut-être créer une signature keystore de débogage ou de release (choisissez le bon chemin de build d'application, `debug` ou `release`) pour éviter une erreur `6003` lors de l'enregistrement du `pushToken` Huawei avec le SDK OneSignal. Voir la [section "Configure a Signature"](https://developer.huawei.com/consumer/en/doc/HMS-Guides/Preparations#h2-1584707362385)
</Accordion>

<Accordion title="notification_types: -25">
  `"notification_types":-25` signifie que OneSignal a expiré en attendant une réponse du HMS de Huawei pour obtenir un token push. Cela est très probablement dû à un autre SDK push HMS tiers ou à votre propre HmsMessageService recevant cet événement au lieu de OneSignal.

  Veuillez consulter l'[étape sur la façon de vérifier cela et de transférer l'événement si c'est le cas](#compatibilite-avec-dautres-bibliotheques-push-hms-ou-votre-propre-classe-hmsmessageservice).
</Accordion>

<Accordion title="notification_types: -28">
  Cela signifie qu'il manque une classe HMS dans l'application qui est nécessaire pour les notifications push. Le simple fait d'avoir `com.huawei.hms:push` dans le `build.gradle` empêchera cette erreur spécifique de se produire. Cependant, si vous avez des paramètres Proguard ou R8 agressifs, cela pourrait causer des problèmes. Nous recommandons de désactiver temporairement `minifyEnabled` si vous l'avez pour voir si c'est la cause du problème.

  De plus, vous ne devriez pas mélanger les versions majeures d'autres bibliothèques HMS. Commencez par la version 4 ou 5. Assurez-vous de ne pas avoir un mélange de la version 3 à 5, ce qui créera d'autres erreurs
</Accordion>

<Accordion title="Erreur lors de l'obtention du token push Huawei">
  ```
  E/OneSignal: HMS ApiException getting Huawei push token!
      com.huawei.hms.common.ApiException: -5: Core error
  ```

  Vérifiez vos règles Proguard ou R8 pour vous assurer qu'elles sont configurées correctement. Désactivez-les éventuellement temporairement pour voir si c'est lié. Si cela résout le problème après avoir désactivé Proguard ou R8, vous pouvez suivre ce guide et les réactiver. Voir la [section "Configure a Signature"](https://developer.huawei.com/consumer/en/doc/HMS-Guides/Preparations#h2-1584707362385)
</Accordion>

## Tester l'intégration du SDK OneSignal

Ce guide vous aide à vérifier que votre intégration du SDK OneSignal fonctionne correctement en testant les notifications push, l'enregistrement des abonnements et la messagerie in-app.

<Warning>
  Si vous testez avec un émulateur Android, il doit démarrer avec un démarrage à froid.

  1. Allez dans **Device Manager** dans Android Studio.
  2. Sélectionnez votre appareil émulateur et cliquez sur **Edit**.
  3. Allez dans **Additional Settings** ou **More**.
  4. Définissez l'**option de démarrage** sur **Cold Boot**.
  5. Enregistrez les modifications et redémarrez l'émulateur.
</Warning>

### Vérifier les abonnements mobiles

<Steps>
  <Step title="Lancez votre application sur un appareil de test.">
    L'invite d'autorisation push native devrait apparaître automatiquement si vous avez ajouté la méthode `requestPermission` lors de l'initialisation.

    <Frame caption="Invites d'autorisation push iOS et Android">
      <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a90c2cc443f5fe9e7c80368c680a16cf1ca6203f7b28a0a6eec212add8510f80-Untitled_design_11.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=96dbf224b3ae93b3d814712cdc5416ba" width="1920" height="1080" data-path="images/docs/a90c2cc443f5fe9e7c80368c680a16cf1ca6203f7b28a0a6eec212add8510f80-Untitled_design_11.png" />
    </Frame>
  </Step>

  <Step title="Vérifiez votre tableau de bord OneSignal">
    Avant d'accepter l'invite, vérifiez le tableau de bord OneSignal :

    * Allez dans **Audience > Subscriptions**.
    * Vous devriez voir une nouvelle entrée avec le statut "Never Subscribed".

    <Frame caption="Tableau de bord affichant un abonnement avec le statut 'Never Subscribed'">
      <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f19fa5ada3572ce14447bb5639744e9da75cd7a3ab43ecc1a057f2ed92b38e6f-Screenshot_2025-03-16_at_14.55.39.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=b04ca3217e22155841b500a55c7f1511" width="1588" height="976" data-path="images/docs/f19fa5ada3572ce14447bb5639744e9da75cd7a3ab43ecc1a057f2ed92b38e6f-Screenshot_2025-03-16_at_14.55.39.png" />
    </Frame>
  </Step>

  <Step title="Retournez à l'application et appuyez sur Autoriser dans l'invite." />

  <Step title="Actualisez la page Subscription du tableau de bord OneSignal.">
    Le statut de l'abonnement devrait maintenant afficher **Subscribed**.

    <Frame caption="Tableau de bord affichant un abonnement avec le statut 'Subscribed'">
      <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/85b0376cdcc6f93fb7b3895b18cd1788d2342776d7995909881e5c64dd40fb62-Screenshot_2025-03-16_at_15.57.34.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=c6abec64d102b84e30f6c9c0327808ef" width="1588" height="976" data-path="images/docs/85b0376cdcc6f93fb7b3895b18cd1788d2342776d7995909881e5c64dd40fb62-Screenshot_2025-03-16_at_15.57.34.png" />
    </Frame>

    <Check>Vous avez créé avec succès un [abonnement mobile](/docs/en/subscriptions).
    Les abonnements mobiles sont créés lorsque les utilisateurs ouvrent votre application pour la première fois sur un appareil ou s'ils désinstallent et réinstallent votre application sur le même appareil.</Check>
  </Step>
</Steps>

### Configurer les abonnements de test

Les abonnements de test sont utiles pour tester une notification push avant d'envoyer un message.

<Steps>
  <Step title="Ajouter aux abonnements de test.">
    Dans le tableau de bord, à côté de l'abonnement, cliquez sur le bouton **Options (trois points)** et sélectionnez **Add to Test Users**.

    <Frame caption="Ajout d'un appareil aux abonnements de test">
      <img src="https://mintcdn.com/onesignal/NCUI56Tiw7V-s0dT/images/dashboard/add-to-test-subscriptions.png?fit=max&auto=format&n=NCUI56Tiw7V-s0dT&q=85&s=2455d4cd74ea4ad686f76730cd95bbaa" width="1188" height="742" data-path="images/dashboard/add-to-test-subscriptions.png" />
    </Frame>
  </Step>

  <Step title="Nommez votre abonnement.">
    Nommez l'abonnement afin de pouvoir identifier facilement votre appareil plus tard dans l'**onglet Test Users**.
  </Step>

  <Step title="Créer un segment d'utilisateurs de test.">
    Allez dans **Audience > Segments > New Segment**.
  </Step>

  <Step title="Nommez le segment.">
    Nommez le segment `Test Users` (le nom est important car il sera utilisé plus tard).
  </Step>

  <Step title="Ajoutez le filtre Test Users et cliquez sur Create Segment.">
    <Frame caption="Création d'un segment 'Test Users' avec le filtre Test Users">
      <img src="https://mintcdn.com/onesignal/NCUI56Tiw7V-s0dT/images/dashboard/create-test-users-segment.png?fit=max&auto=format&n=NCUI56Tiw7V-s0dT&q=85&s=91b8a021be6e83662854e68ec3e1da04" width="1188" height="742" data-path="images/dashboard/create-test-users-segment.png" />
    </Frame>

    <Check>Vous avez créé avec succès un segment d'utilisateurs de test.
    Nous pouvons maintenant tester l'envoi de messages à cet appareil individuel et à des groupes d'utilisateurs de test.</Check>
  </Step>
</Steps>

### Envoyer un push de test via l'API

<Steps>
  <Step title="Obtenez votre clé API d'application et votre ID d'application.">
    Dans votre tableau de bord OneSignal, allez dans **Settings > [Keys & IDs](/docs/en/keys-and-ids)**.
  </Step>

  <Step title="Mettez à jour le code fourni.">
    Remplacez `YOUR_APP_API_KEY` et `YOUR_APP_ID` dans le code ci-dessous par vos clés réelles. Ce code utilise le segment `Test Users` que nous avons créé plus tôt.

    ```curl theme={null}
    curl -X \
    POST --url 'https://api.onesignal.com/notifications' \
     --header 'content-type: application/json; charset=utf-8' \
     --header 'authorization: Key YOUR_APP_API_KEY' \
     --data \
     '{
      "app_id": "YOUR_APP_ID",
      "target_channel": "push",
      "name": "Testing basic setup",
      "headings": {
      	"en": "👋"
      },
      "contents": {
        "en": "Hello world!"
      },
      "included_segments": [
        "Test Users"
      ],
      "ios_attachments": {
        "onesignal_logo": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
      },
      "big_picture": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
    }'
    ```
  </Step>

  <Step title="Exécutez le code.">
    Exécutez le code dans votre terminal.
  </Step>

  <Step title="Vérifiez les images et la livraison confirmée.">
    Si toutes les étapes de configuration ont été complétées avec succès, les abonnements de test devraient recevoir une notification avec une image incluse :

    <Frame caption="Notification push avec image sur iOS et Android">
      <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/e4e3e812eb6841ff11795a6ee0ea36eff483920ea9266733d6948ed34df3def3-Untitled_design_9.png?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=9bf6f4a73e38ec424b8cfec75a474a26" width="1200" height="800" data-path="images/docs/e4e3e812eb6841ff11795a6ee0ea36eff483920ea9266733d6948ed34df3def3-Untitled_design_9.png" />
    </Frame>

    <Info>Les images apparaîtront petites dans la vue de notification réduite. Développez la notification pour voir l'image complète.</Info>
  </Step>

  <Step title="Vérifiez la livraison confirmée.">
    Dans votre tableau de bord, allez dans **Delivery > Sent Messages**, puis cliquez sur le message pour afficher les statistiques.

    Vous devriez voir la statistique **confirmed**, ce qui signifie que l'appareil a reçu la push.
    <Check>Vous avez envoyé avec succès une notification via notre API à un segment.</Check>

    <Warning>
      * Aucune image reçue ? Votre [Notification Service Extension](#ios-setup) est peut-être manquant.
      * Aucune livraison confirmée ? Consultez le guide de dépannage [ici](/docs/en/confirmed-delivery#troubleshooting-confirmed-delivery).
      * Vous rencontrez des problèmes ? Copiez-collez la requête API et un journal du début à la fin du lancement de l'application dans un fichier `.txt`. Ensuite, partagez les deux avec `support@onesignal.com`.
    </Warning>
  </Step>
</Steps>

### Envoyer un message in-app

Les [messages in-app](/docs/en/in-app-messages-setup) vous permettent de communiquer avec les utilisateurs pendant qu'ils utilisent votre application.

<Steps>
  <Step title="Fermez ou mettez votre application en arrière-plan sur l'appareil.">
    C'est parce que les utilisateurs doivent répondre aux critères d'audience in-app *avant* qu'une nouvelle session ne commence. Dans OneSignal, une nouvelle session commence lorsque l'utilisateur ouvre votre application après qu'elle ait été en arrière-plan ou fermée pendant au moins 30 secondes. Pour plus de détails, consultez notre guide sur [comment les messages in-app sont affichés](/docs/en/in-app-messages-setup#how-are-iams-displayed%3F).
  </Step>

  <Step title="Créer un message in-app.">
    * Dans votre tableau de bord OneSignal, naviguez vers **Messages > In-App > New In-App**.
    * Trouvez et sélectionnez le message **Welcome**.
    * Définissez votre Audience comme le segment **Test Users** que nous avons utilisé précédemment.

    <Frame caption="Ciblage du segment 'Test Users' avec un message in-app">
      <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/2979dfb2c6e0711669ebe737d78d975dcfed9f8117bdd68846255b9fc91e4771-Screenshot_2025-03-17_at_14.56.23.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=f705ee679a9248dab378305e15fa24bf" width="1410" height="752" data-path="images/docs/2979dfb2c6e0711669ebe737d78d975dcfed9f8117bdd68846255b9fc91e4771-Screenshot_2025-03-17_at_14.56.23.png" />
    </Frame>
  </Step>

  <Step title="Personnalisez le contenu du message si désiré.">
    <Frame caption="Exemple de personnalisation du message de bienvenue in-app">
      <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4c511ebdb04f33055556b9969bab8deee0d62154573cf0b41ffb25cc8431e7c0-Screenshot_2025-03-17_at_14.59.37.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=6134cc70e578d1055f770edcbad47efb" width="1646" height="1070" data-path="images/docs/4c511ebdb04f33055556b9969bab8deee0d62154573cf0b41ffb25cc8431e7c0-Screenshot_2025-03-17_at_14.59.37.png" />
    </Frame>
  </Step>

  <Step title="Définir le déclencheur sur 'On app open'." />

  <Step title="Planifier la fréquence.">
    Sous **Schedule > How often do you want to show this message?** sélectionnez **Every time trigger conditions are satisfied**.

    <Frame caption="Options de planification du message in-app">
      <img src="https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/c48ccaf33a74d5aa442c768a18b8e642024b89305aae665d613aee1d8bde43ec-Screenshot_2025-03-17_at_15.00.40.png?fit=max&auto=format&n=9_Q1FZLh6C0BFLq-&q=85&s=9a57431acffa267d22af4e19052fb5ee" width="1646" height="1070" data-path="images/docs/c48ccaf33a74d5aa442c768a18b8e642024b89305aae665d613aee1d8bde43ec-Screenshot_2025-03-17_at_15.00.40.png" />
    </Frame>
  </Step>

  <Step title="Rendre le message actif.">
    Cliquez sur **Make Message Live** pour qu'il soit disponible pour vos utilisateurs de test chaque fois qu'ils ouvrent l'application.
  </Step>

  <Step title="Ouvrez l'application et voyez le message.">
    Après que le message in-app soit actif, ouvrez votre application. Vous devriez le voir s'afficher :

    <Frame caption="Message de bienvenue in-app affiché sur les appareils">
      <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a7ed4bb02be56900a65d2519e3d69f9c9b2c2a1c65fe740f07789e4ffe79cd67-Untitled_design_10.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=6f692b569706ca39df0b4cc2b70f3de2" width="1920" height="1080" data-path="images/docs/a7ed4bb02be56900a65d2519e3d69f9c9b2c2a1c65fe740f07789e4ffe79cd67-Untitled_design_10.png" />
    </Frame>

    <Warning>
      Vous ne voyez pas le message ?

      * Démarrez une nouvelle session
        * Vous devez fermer ou mettre l'application en arrière-plan pendant au moins 30 secondes avant de la rouvrir. Cela garantit qu'une nouvelle session est démarrée.
        * Pour plus d'informations, voir [comment les messages in-app sont affichés](/docs/en/in-app-messages-setup#how-are-iams-displayed%3F).
      * Toujours dans le segment `Test Users` ?
        * Si vous avez réinstallé ou changé d'appareil, réajoutez l'appareil aux [abonnements de test](#set-up-test-subscriptions) et confirmez qu'il fait partie du segment Test Users.
      * Vous rencontrez des problèmes ?
        * Suivez [Obtenir un journal de débogage](/docs/en/capturing-a-debug-log) tout en reproduisant les étapes ci-dessus. Cela générera des journaux supplémentaires que vous pourrez partager avec `support@onesignal.com` et nous vous aiderons à enquêter sur ce qui se passe.
    </Warning>
  </Step>
</Steps>

<Check>
  Vous avez configuré avec succès le SDK OneSignal et appris des concepts importants tels que :

  * Collecter des [Abonnements](/docs/en/subscriptions), définir des [abonnements de test](/docs/en/find-set-test-subscriptions) et créer des [Segments](/docs/en/segmentation).
  * Envoyer des [Push](/docs/en/push) avec des images et une [Livraison confirmée](/docs/en/confirmed-delivery) en utilisant des Segments et notre API [Create message](/reference/create-message).
  * Envoyer des [messages in-app](/docs/en/in-app-messages-setup).

  Continuez avec ce guide pour identifier les utilisateurs dans votre application et configurer des fonctionnalités supplémentaires.
</Check>

***

## Identification des utilisateurs

Précédemment, nous avons démontré comment créer des [Abonnements](/docs/en/subscriptions) mobiles. Nous allons maintenant étendre l'identification des [Utilisateurs](/docs/en/users) sur tous leurs abonnements (y compris push, email et SMS) en utilisant le SDK OneSignal. Nous couvrirons les External IDs, les tags, les abonnements multicanaux, la confidentialité et le suivi des événements pour vous aider à unifier et engager les utilisateurs sur toutes les plateformes.

### Attribuer un External ID

Utilisez un External ID pour identifier les utilisateurs de manière cohérente sur tous les appareils, adresses e-mail et numéros de téléphone en utilisant l'identifiant utilisateur de votre backend. Cela garantit que votre messagerie reste unifiée sur tous les canaux et systèmes tiers (particulièrement important pour les [Intégrations](/docs/en/integrations)).

Définissez l'External ID avec la [méthode `login`](/docs/en/mobile-sdk-reference#login-external-id) de notre SDK chaque fois qu'ils sont identifiés par votre application.

<Note>
  OneSignal génère des ID uniques en lecture seule pour les abonnements (Subscription ID) et les utilisateurs (OneSignal ID).

  Lorsque les utilisateurs téléchargent votre application sur différents appareils, s'abonnent à votre site Web et/ou vous fournissent des adresses e-mail et des numéros de téléphone en dehors de votre application, de nouveaux abonnements seront créés.

  La définition de l'External ID via notre SDK est fortement recommandée pour identifier les utilisateurs sur tous leurs abonnements, quelle que soit la façon dont ils sont créés.
</Note>

### Ajouter des tags de données

Les [Tags](/docs/en/add-user-data-tags) sont des paires clé-valeur de données chaîne que vous pouvez utiliser pour stocker les propriétés des utilisateurs (comme `username`, `role` ou les préférences) et les événements (comme `purchase_date`, `game_level` ou les interactions utilisateur). Les tags alimentent la [Personnalisation des messages](/docs/en/message-personalization) et la [Segmentation](/docs/en/segmentation) avancées permettant des cas d'utilisation plus avancés.

Définissez les tags avec les [méthodes `addTag` et `addTags`](/docs/en/mobile-sdk-reference#data-tags) de notre SDK au fur et à mesure que les événements se produisent dans votre application.

Dans cet exemple, l'utilisateur a atteint le niveau 6 identifiable par le tag appelé `current_level` défini sur une valeur de `6`.

<Frame caption="Un profil utilisateur dans OneSignal avec un tag appelé &#x22;current_level&#x22; défini sur &#x22;6&#x22;">
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d4674261847231079fecc176ba88065409c90943e3854b9df200457325a0aed4-Screenshot_2025-03-18_at_14.47.25.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=91083bf83a4c03ea40d485b23f072259" width="1380" height="941" data-path="images/docs/d4674261847231079fecc176ba88065409c90943e3854b9df200457325a0aed4-Screenshot_2025-03-18_at_14.47.25.png" />
</Frame>

Nous pouvons créer un segment d'utilisateurs ayant un niveau entre 5 et 10, et l'utiliser pour envoyer des messages ciblés et personnalisés :

<Frame caption="Éditeur de segment montrant un segment ciblant les utilisateurs avec une valeur current_level supérieure à 4 et inférieure à 10">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/300d36b632a6f6d7017780457bbe2610b71767fd0db093c7611e59714dcbda5b-Screenshot_2025-03-18_at_14.49.56.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=b84ab0d2c6eedbd6d4e7a2bf15afe103" width="1380" height="941" data-path="images/docs/300d36b632a6f6d7017780457bbe2610b71767fd0db093c7611e59714dcbda5b-Screenshot_2025-03-18_at_14.49.56.png" />
</Frame>

<br />

<Frame caption="Capture d'écran montrant une notification push ciblant le segment Niveau 5-10 avec un message personnalisé">
  <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/97e09b42d25c6d3f4c7cb0a6fff4dfb8893cbb4b283f7ff1f77977c33113319c-Screenshot_2025-03-18_at_14.55.47.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=c7839b12057d65a12a4eaddce6e2c11f" width="2764" height="2286" data-path="images/docs/97e09b42d25c6d3f4c7cb0a6fff4dfb8893cbb4b283f7ff1f77977c33113319c-Screenshot_2025-03-18_at_14.55.47.png" />
</Frame>

<br />

<Frame caption="La notification push est reçue sur un appareil iOS et Android avec le contenu personnalisé">
  <img src="https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3bf1810580f30984745017056383f151b874513b6bfb1445fb1016e5c9a79e82-Untitled_design_12.png?fit=max&auto=format&n=_KaXe4GQkxsEfa17&q=85&s=94b6e9eeeb5516285a256a72063a0906" width="1920" height="1080" data-path="images/docs/3bf1810580f30984745017056383f151b874513b6bfb1445fb1016e5c9a79e82-Untitled_design_12.png" />
</Frame>

### Ajouter des abonnements email et/ou SMS

Plus tôt, nous avons vu comment notre SDK crée des abonnements mobiles pour envoyer des messages push et in-app. Vous pouvez également atteindre les utilisateurs via les canaux email et SMS en créant les abonnements correspondants.

* Utilisez la [méthode `addEmail`](/docs/en/mobile-sdk-reference#addemail-%2C-removeemail) pour créer des abonnements email.
* Utilisez la [méthode `addSms`](/docs/en/mobile-sdk-reference#addsms-%2C-removesms) pour créer des abonnements SMS.

Si l'adresse e-mail et/ou le numéro de téléphone existent déjà dans l'application OneSignal, le SDK l'ajoutera à l'utilisateur existant, il ne créera pas de doublons.

Vous pouvez afficher les utilisateurs unifiés via **Audience > Users** dans le tableau de bord ou avec l'[API View user](/reference/view-user).

<Frame caption="Un profil utilisateur avec des abonnements push, email et SMS unifiés par External ID">
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b1cf9999d41da6e4ce333e1126612529b85eac47447bb0b434418d082f595acd-Screenshot_2025-03-18_at_14.43.46.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=7c3885b66e44e097fa0ed7c47f27c911" width="1506" height="848" data-path="images/docs/b1cf9999d41da6e4ce333e1126612529b85eac47447bb0b434418d082f595acd-Screenshot_2025-03-18_at_14.43.46.png" />
</Frame>

<Note>
  Meilleures pratiques pour la communication multicanale

  * Obtenez un consentement explicite avant d'ajouter des abonnements email ou SMS.
  * Expliquez les avantages de chaque canal de communication aux utilisateurs.
  * Fournissez des préférences de canal afin que les utilisateurs puissent sélectionner les canaux qu'ils préfèrent.
</Note>

***

### Confidentialité et consentement de l'utilisateur

Pour contrôler quand OneSignal collecte les données utilisateur, utilisez les méthodes de contrôle du consentement du SDK :

* [`setConsentRequired(true)`](/docs/en/mobile-sdk-reference#setconsentrequired) : Empêche la collecte de données jusqu'à ce que le consentement soit donné.
* [`setConsentGiven(true)`](/docs/en/mobile-sdk-reference#setconsentgiven) : Active la collecte de données une fois le consentement accordé.

Consultez nos documents sur la confidentialité et la sécurité pour en savoir plus sur :

* [Données collectées par le SDK](/docs/en/data-collected-by-the-onesignal-sdk)
* [Gestion des données personnelles](/docs/en/handling-personal-data)

***

## Demander les autorisations push

Au lieu d'appeler `requestPermission()` immédiatement à l'ouverture de l'application, adoptez une approche plus stratégique. Utilisez un message in-app pour expliquer la valeur des notifications push avant de demander l'autorisation.

Pour les meilleures pratiques et les détails d'implémentation, consultez notre guide [Demander les autorisations push](/docs/en/prompt-for-push-permissions).

***

## Écouter les événements push, utilisateur et in-app

Utilisez les écouteurs du SDK pour réagir aux actions des utilisateurs et aux changements d'état.

Le SDK fournit plusieurs écouteurs d'événements auxquels vous pouvez vous connecter. Consultez notre [guide de référence du SDK](/docs/en/mobile-sdk-reference) pour plus de détails.

### Événements de notification push

* [`addClickListener()`](/docs/en/mobile-sdk-reference#addclicklistener-push) : Détecter quand une notification est tapée. Utile pour les [Deep Linking](/docs/en/deep-linking).
* [`addForegroundLifecycleListener()`](/docs/en/mobile-sdk-reference#addforegroundlifecyclelistener-push) : Contrôler comment les notifications se comportent au premier plan.

Pour une personnalisation complète, consultez [Mobile Service Extensions](/docs/en/service-extensions).

### Changements d'état de l'utilisateur

* [`addObserver()` pour l'état utilisateur](/docs/en/mobile-sdk-reference#addobserver-user-state) : Détecter quand l'External ID est défini.
* [`addPermissionObserver()`](/docs/en/mobile-sdk-reference#addpermissionobserver-push) : Suivre l'interaction spécifique de l'utilisateur avec l'invite d'autorisation push native.
* [`addObserver()` pour l'abonnement push](/docs/en/mobile-sdk-reference#addobserver-push-subscription-changes) : Suivre quand le statut de l'abonnement push change.

### Événements de message in-app

* [`addClickListener()`](/docs/en/mobile-sdk-reference#addclicklistener-in-app) : Gérer les actions de clic in-app. Idéal pour le deep linking ou le suivi des événements.
* [`addLifecycleListener()`](/docs/en/mobile-sdk-reference#addclicklistener-in-app) : Suivre le cycle de vie complet des messages in-app (affiché, cliqué, rejeté, etc.).

***

## Configuration avancée et capacités

Explorez davantage de capacités pour améliorer votre intégration :

* [🔁 Migrer vers OneSignal depuis un autre service](/docs/en/migrating-to-onesignal)
* [🌍 Suivi de localisation](/docs/en/mobile-sdk-reference#location)
* [🔗 Deep Linking](/docs/en/deep-linking)
* [🔌 Intégrations](/docs/en/integrations)
* [🧩 Extensions de service mobile](/docs/en/service-extensions)
* [🛎️ Boutons d'action](/docs/en/action-buttons)
* [🌐 Messagerie multilingue](/docs/en/multi-language-messaging)
* [🛡️ Vérification d'identité](/docs/en/identity-verification)
* [📊 Résultats personnalisés](/docs/en/custom-outcomes)
* [📲 Live Activities](/docs/en/live-activities)

### Configuration et référence du SDK mobile

Assurez-vous d'avoir activé toutes les fonctionnalités clés en consultant le guide [Configuration push mobile](/docs/en/mobile-push-setup).

Pour tous les détails sur les méthodes disponibles et les options de configuration, visitez la [référence du SDK mobile](/docs/en/mobile-sdk-reference).

<Check>Félicitations ! Vous avez terminé avec succès le guide de configuration du SDK mobile.</Check>

***

<Info>
  Besoin d'aide ?

  Discutez avec notre équipe d'assistance ou envoyez un e-mail à `support@onesignal.com`

  Veuillez inclure :

  * Les détails du problème que vous rencontrez et les étapes de reproduction si disponibles
  * Votre OneSignal App ID
  * L'External ID ou le Subscription ID le cas échéant
  * L'URL du message que vous avez testé dans le OneSignal Dashboard le cas échéant
  * Tous les [journaux ou messages d'erreur](/docs/en/capturing-a-debug-log) pertinents

  Nous serons ravis de vous aider !
</Info>

***
