> ## 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 téléversant 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-CA/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart)
* [Démarrage rapide Unity3D](/fr-CA/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-CA/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 (p. ex., [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 façons 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 plugiciel 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 plugiciel 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 plugiciel 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 plugiciel 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 plugiciel **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 plugiciels tiers.

<Note>
  La distribution vers des plugiciels 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 plugiciels 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 au moyen d'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-CA/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart.md)
- [PFPlatformSpecificAndroidDevicePushNotificationRegistrationRequest](/fr-CA/services/playfab/api-references/c/pfplatformspecifictypes/structs/pfplatformspecificandroiddevicepushnotificationregistrationrequest.md)
- [Notifications push pour iOS](/fr-CA/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-ios.md)
- [PFPlatformSpecificClientAndroidDevicePushNotificationRegistrationAsync](/fr-CA/services/playfab/api-references/c/pfplatformspecific/functions/pfplatformspecificclientandroiddevicepushnotificationregistrationasync.md)
- [Prise en main d'Android Studio et des notifications push](/fr-CA/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/getting-started-android-studio-push-notifications.md)
