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

# Notifications push pour Android

> Configurez les notifications push PlayFab pour Android en configurant votre projet Firebase, en chargeant la clé privée du serveur et en effectuant des tests avec un client Unity3D.

# Notifications push pour Android

## Prérequis

* [Démarrage rapide des notifications push](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart)
* [Démarrage rapide Unity3D](/fr/services/playfab/sdks/unity3d/quickstart)
* **Facultatif** [Unity Editor Extensions](https://blog.playfab.com/blog/new-unity-editor-extensions-beta)
* **Facultatif** [Démarrage rapide Postman](/fr/services/playfab/sdks/postman/postman-quickstart)

## Configuration du canal de notification Android

### Configuration de Firebase

Vous devez utiliser et synchroniser trois sites web Google. Dans Google/Firebase, il existe à la fois des projets et des applications :

* **Projet** :
  * Importez votre projet dans la [console Firebase](https://console.firebase.google.com/) s'il n'y figure pas déjà.

* **Application** :
  * Les projets [Firebase](https://console.firebase.google.com/) contiennent des applications.
  * Assurez-vous que votre application existe aux deux emplacements, avec le même nom et le même identifiant (par exemple, [Unicorn Battle et com.playfab.unicornbattle2](https://play.google.com/store/apps/details?id=com.playfab.unicornbattle2)).

### PlayFab requiert un fichier de clé privée de serveur

* Vous pouvez obtenir ce fichier de clé privée depuis la [console Firebase](https://console.firebase.google.com/)
* **Console Firebase** :
  * Sélectionnez votre **Project** ou votre **App**, puis trouvez l'option **Settings** (il existe de nombreuses façons d'y parvenir, qui mènent toutes au même endroit).
  * Dans l'onglet **Service accounts**, sélectionnez le bouton **Generate new private key** pour télécharger le fichier JSON.

## Utilisation du fichier de clé privée

* Fournissez votre fichier de clé privée de l'une des deux manières suivantes :

  1. Chargez le fichier de clé privée directement dans l'**interface utilisateur de Game Manager** : **Settings** (de votre **Title**) > **Push Notifications** > **Android**.

  2. Ou appelez [SetupPushNotification](xref:titleid.playfabapi.com.admin.title-widedatamanagement.setuppushnotification) à l'aide de Postman ou d'un projet Unity dont les méthodes de l'API Server sont activées.

  * Name : **your\_game\_name**
  * Platform : **GCM**
  * Credential : (**contenu du fichier de clé privée sous forme de chaîne**) : `{ ... }`
  * Overwrite OldARN : `true`
  * Vous devriez recevoir une réponse **HTTP 200 OK** avec des données similaires à celles-ci.

    ```json theme={null}
    // Postman JSON result output
    {
        "code": 200,
        "status": "OK",
        "data": { "ARN" : "arn:*******/GCM/your_game_name" }
    }
    ```

* Une fois la configuration correctement effectuée (avec l'une ou l'autre méthode), vous devriez voir ceci dans l'**interface utilisateur de Game Manager**, sous **Settings (de votre titre) > Push Notifications > Android**.

  <img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-settings-push-notification-android.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=82a441669374a02ba190157403cbb222" alt="Paramètres PlayFab : notifications push, Android" width="617" height="404" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-settings-push-notification-android.png" />

## Prise en main : notifications push pour Android + Unity

Pour configurer votre projet Unity :

* Créez un projet Unity.

* **FACULTATIF** Importez le package [PlayFab Unity Editor Extensions](https://aka.ms/playfabunityextension).

* Importez le package [Unity PlayFab SDK](https://aka.ms/playfabunitysdkdownload).

* Suivez le guide [FCM Unity](https://firebase.google.com/docs/cloud-messaging/unity/client) pour installer la messagerie FCM et configurer un projet pour les notifications push.
  * Une fois cette opération terminée, vous pouvez poursuivre avec ce guide pour recevoir des messages de PlayFab.
  * Nous vous fournissons dans l'exemple suivant un script monoBehaviour complet prêt pour FCM, qui combine FCM et PlayFab.

* Dans le guide FCM, vous avez créé un script monobehavior qui configure le plug-in Firebase.
  * Vous pouvez continuer à utiliser ce script monobehavior, ou le remplacer par celui de l'exemple suivant.

### Configuration de votre première notification push

Dans Unity, ouvrez le script que vous avez créé dans le tutoriel FCM et remplacez son contenu.

```csharp theme={null}
using PlayFab;
using PlayFab.ClientModels;
using PlayFab.Json;
using UnityEngine;

public class MsgCatcher : MonoBehaviour
{
    public string pushToken;
    public string playFabId;
    public string lastMsg;

    // OnGUI should be deleted/replaced with your own gui - This is only provided for debugging
    public void OnGUI()
    {
        GUI.Label(new Rect(0, 0, Screen.width, 200), pushToken);
        GUI.Label(new Rect(0, 200, Screen.width, Screen.height - 200), lastMsg);
    }

    private void OnPfFail(PlayFabError error)
    {
        Debug.Log("PlayFab: api error: " + error.GenerateErrorReport());
    }

    public void Start()
    {
        // PlayFabSettings.TitleId = "TITLE_ID";
        Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
        Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
        LoginToPlayFab();
    }

    private void LoginToPlayFab()
    {
#if UNITY_ANDROID
        var request = new LoginWithAndroidDeviceIDRequest { AndroidDeviceId = SystemInfo.deviceUniqueIdentifier, CreateAccount = true, };
        PlayFabClientAPI.LoginWithAndroidDeviceID(request, OnPfLogin, OnPfFail);
#endif
    }

    private void OnPfLogin(LoginResult result)
    {
        Debug.Log("PlayFab: login successful");
        playFabId = result.PlayFabId;
        RegisterForPush();
    }

    private void RegisterForPush()
    {
        if (string.IsNullOrEmpty(pushToken) || string.IsNullOrEmpty(playFabId))
            return;

#if UNITY_ANDROID
        var request = new AndroidDevicePushNotificationRegistrationRequest {
            DeviceToken = pushToken,
            SendPushNotificationConfirmation = true,
            ConfirmationMessage = "Push notifications registered successfully"
        };
        PlayFabClientAPI.AndroidDevicePushNotificationRegistration(request, OnPfAndroidReg, OnPfFail);
#endif
    }

    private void OnPfAndroidReg(AndroidDevicePushNotificationRegistrationResult result)
    {
        Debug.Log("PlayFab: Push Registration Successful");
    }

    private void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token)
    {
        Debug.Log("PlayFab: Received Registration Token: " + token.Token);
        pushToken = token.Token;
        RegisterForPush();
    }

    private void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e)
    {
        Debug.Log("PlayFab: Received a new message from: " + e.Message.From);
        lastMsg = "";
        if (e.Message.Data != null)
        {
            lastMsg += "DATA: " + JsonWrapper.SerializeObject(e.Message.Data) + "\n";
            Debug.Log("PlayFab: Received a message with data:");
            foreach (var pair in e.Message.Data)
                Debug.Log("PlayFab data element: " + pair.Key + "," + pair.Value);
        }
        if (e.Message.Notification != null)
        {
            Debug.Log("PlayFab: Received a notification:");
            lastMsg += "TITLE: " + e.Message.Notification.Title + "\n";
            lastMsg += "BODY: " + e.Message.Notification.Body + "\n";
        }
    }
}
```

Générez et exécutez votre projet Unity sur un appareil. Si vous recevez une notification push contenant le texte **Push notifications registered successfully**, tout a fonctionné comme prévu.

<Note>
  `PlayFabSettings.TitleId = TITLE_ID`. Vous devez définir votre propre `TitleId`. Cet exemple ne fonctionnera pas si vous ne mettez pas à jour ce `TitleId`, car notre titre est inscrit avec nos clés et paramètres Firebase, *et non les vôtres*. Pour ce faire, supprimez la mise en commentaire de cette ligne et remplacez `TITLE_ID` par votre `titleId`, ou choisissez votre titre dans le plug-in facultatif Editor Extensions mentionné dans la section précédente.
</Note>

### Résolution des problèmes sur Android

* Vérifiez que vous pouvez envoyer une notification push de test depuis la console Firebase.
  * Si ce n'est pas le cas, votre plug-in Firebase n'est pas correctement configuré ; consultez la documentation Firebase pour en trouver la raison, ou contactez le support Firebase.

* Assurez-vous que le pushToken de votre client FCM est correctement défini.
  * La fonction `OnTokenReceived` de l'exemple doit être appelée et disposer d'un jeton valide.
  * Si elle n'est *pas* appelée, votre plug-in Firebase n'est *pas* correctement configuré ; consultez la documentation Firebase pour en trouver la raison, ou contactez le support Firebase.

* Assurez-vous que votre `titleId` correspond à un titre dont vous êtes propriétaire et qu'il a été inscrit avec la clé d'API serveur de votre projet Firebase.

### Fonctionnalités avancées

Dans **server.[SendPushNotification](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification)**, vous pouvez utiliser **[request.Package](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification#pushnotificationpackage).CustomData** pour transmettre des données arbitraires à l'appareil. Dans l'exemple précédent, ces données sont transmises à la section contenant le commentaire suivant.

```csharp theme={null}
 Debug.Log("PlayFab: Received a message with data:");
```

Vous pouvez personnaliser le récepteur de votre client pour utiliser ces données comme vous le souhaitez. **CustomData** n'étant pas affiché au joueur, il peut servir à transmettre des informations de jeu personnalisées à votre client, ou à planifier localement une autre notification future à l'aide du plug-in **FCM**.

Vous pouvez également utiliser **[request.Package](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification#pushnotificationpackage).CustomData** ou demander **[AdvancedPlatformDelivery](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification#advancedpushplatformmsg)** pour une distribution vers de nombreux plug-ins tiers.

<Note>
  La distribution vers des plug-ins tiers n'est ni prise en charge ni garantie, mais elle est disponible pour les utilisateurs avancés.
</Note>

## Assistance supplémentaire

Pour obtenir de l'aide, signaler des bogues ou poser des questions, écrivez-nous sur nos [forums](https://community.playfab.com/index.html).

Actuellement, nous ne prenons en charge nos services que pour le flux standard décrit dans ce document. Si votre équipe recherche des fonctionnalités supplémentaires avec d'autres services ou plug-ins de notifications push courants, faites-le-nous savoir ! Nous apprécions les commentaires de notre communauté de développeurs.

Pour la documentation sur la charge utile push via Amazon SNS :

* [Amazon SNS Message & JSON Formats](https://docs.aws.amazon.com/sns/latest/dg/json-formats.html)


## Related topics

- [Démarrage rapide des notifications push](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart.md)
- [Notifications push pour iOS](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-ios.md)
- [PFPlatformSpecificAndroidDevicePushNotificationRegistrationRequest](/fr/services/playfab/api-references/c/pfplatformspecifictypes/structs/pfplatformspecificandroiddevicepushnotificationregistrationrequest.md)
- [Prise en main d'Android Studio et des notifications push](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/getting-started-android-studio-push-notifications.md)
- [PFPlatformSpecificClientAndroidDevicePushNotificationRegistrationAsync](/fr/services/playfab/api-references/c/pfplatformspecific/functions/pfplatformspecificclientandroiddevicepushnotificationregistrationasync.md)
