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

# Prise en main d'Android Studio et des notifications push

> Connectez Android Studio, Google Play Services, Firebase Cloud Messaging et PlayFab pour envoyer des notifications push à vos applications clientes Android.

## Vue d'ensemble

Ce tutoriel a été conçu pour vous aider à mettre rapidement en place l'intégration Android de PlayFab avec les notifications push.

Les notifications push nécessitent une configuration dans plusieurs systèmes. Avant de commencer, voyons comment fonctionne l'infrastructure. Quatre entités participent au processus :

1. **Google Play Services**
2. **Firebase Cloud Messaging Service**s (**FCM**, built on top of the old **Google Cloud Messaging**.)
3. **PlayFab Services**
4. **Client Applications**

### 1. Google Play Services

Google Play Services identifie votre page sur le Play Store à l'aide d'un nom de package.

Par exemple : **com.bob.games.matchthree**.

Une fois inscrit dans Google Play, le nom de package devient un ID d'application unique et sert à de nombreuses fins, de l'installation au moyen du Play Store à la prévention de l'usurpation d'identité.

### 2. Firebase Cloud Messaging (FCM)

Les services Firebase Cloud Messaging vous offrent un système infonuagique permettant d'envoyer, d'acheminer et de distribuer vos notifications push.

Ils permettent également à d'autres services (comme PlayFab) d'envoyer des notifications push en votre nom à l'aide de la clé de serveur FCM.

### 3. Services PlayFab

Les services PlayFab utilisent ensuite la clé de serveur FCM pour envoyer des notifications push à vos clients.

### 4. Services clients

Enfin, votre application cliente peut recevoir les notifications et les traiter selon ses besoins.

### Répartition en quatre parties

Par conséquent, nous devons configurer *4 systèmes différents*. Pour ce faire, notre tutoriel est divisé en 4 chapitres, chacun couvrant la configuration d'un élément.

<Note>
  L'*ordre* dans lequel vous configurez les systèmes est important.
</Note>

## Prérequis

* Vous devez disposer d'un compte Google.
* Vous devez disposer d'un compte PlayFab.
* Une icône de notification générée à l'aide du [générateur d'icônes de notification](https://romannurik.github.io/AndroidAssetStudio/icons-notification.html) d'Android Asset Studio.

## Scénario

Dans cette section du tutoriel, nous allons assembler une application appelée Foo PlayFab App. Il s'agit d'une application Android qui offre les fonctions suivantes :

* Elle se connecte à PlayFab à l'aide d'un ID d'appareil Android.
* Elle reçoit des notifications push de PlayFab.

Notre nom de package sera com.foo.playfab.app.

<Info>
  Veillez à utiliser votre propre nom de package et votre propre titre lorsque vous suivez ce tutoriel.
</Info>

### Chapitre 1 : configuration de Firebase

Commencez la configuration de Firebase à l'aide de sa [page de console officielle](https://console.firebase.google.com/). Une page s'affiche, sur laquelle vous pouvez ajouter un nouveau projet.

* Pour ce faire, sélectionnez la zone **Add project**, comme illustré dans l'image suivante.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-add-project.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=c6ebf07725bdea073d34718e5d7c3f1d" alt="Firebase : ajouter un projet" width="709" height="601" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-add-project.png" />

* Vous êtes invité à fournir un **Project Name** (dans ce tutoriel, nous utilisons **Foo PlayFab App**, mais *veillez* à choisir votre *propre* nom lorsque vous suivez ce tutoriel).

* Sélectionnez le bouton **Create Project** pour passer à l'étape suivante.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-create-project.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=93cc77ef6805ee6472636146800a54e9" alt="Firebase : créer un projet" width="662" height="591" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-create-project.png" />

Vous êtes redirigé vers le **New Project Dashboard**.

* Ajoutez une nouvelle **Android Application** au projet en sélectionnant la zone illustrée dans l'image suivante.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-add-to-android-app.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=db71c761512694decfdf3298661322cf" alt="Firebase : ajouter Firebase à une application Android" width="801" height="695" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-add-to-android-app.png" />

L'ajout d'une nouvelle **Application** se fait en 3 étapes.

1. Vous devez d'abord fournir un **Android Package Name**. Nous utilisons **com.foo.playfab.app**, mais veillez à choisir votre *propre* **Package Name** lorsque vous suivez ce tutoriel.

2. Sélectionnez le bouton **Register App** pour passer à l'étape suivante.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-register-android-app.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=8949cec22f3514f2833782c065266372" alt="Firebase : inscrire l'application Android" width="694" height="742" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-register-android-app.png" />

L'étape 2 vous permet de télécharger un fichier de paramètres appelé **google-services.json**. Il sera utilisé ultérieurement dans l'**App** pour configurer automatiquement les services **Google**.

* Après l'avoir téléchargé, sélectionnez le bouton **Continue** pour passer à l'étape suivante.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-add-google-settings-file.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=003f8a1a55f516e5a3fa60584e283db2" alt="Firebase : ajouter le fichier de paramètres Google" width="694" height="742" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-add-google-settings-file.png" />

3. La dernière étape fournit des informations sur la configuration de votre processus de build pour connecter les SDK Firebase et Google Play.

<Note>
  Vous pouvez ignorer ces informations, car nous utiliserons un outil automatisé intégré à Android Studio qui effectue cette configuration automatiquement.
</Note>

* Sélectionnez le bouton **Finish** pour continuer.

<img src="https://mintcdn.com/microsoft-4404708b/59DtlsYffqki5YJ_/images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-finish-adding-to-android-app.webp?fit=max&auto=format&n=59DtlsYffqki5YJ_&q=85&s=3ff4fb88ab6c458e6a343ca83afd98f9" alt="Firebase : terminer l'ajout à l'application Android" width="689" height="740" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-finish-adding-to-android-app.webp" />

* Une fois l'**Application** ajoutée, elle apparaît dans le tableau de bord.

* À ce stade, la configuration est terminée et nous devons extraire la clé de serveur FCM (que nous utiliserons pour connecter les notifications push PlayFab).

* Accédez aux **Project settings**, comme illustré dans l'image suivante.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-project-settings.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=25453db20ddb38b6c7cd0e6f46578db7" alt="Firebase : paramètres du projet" width="696" height="547" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-project-settings.png" />

* Dans **Project settings**, accédez à l'onglet **Cloud Messaging**.

* Repérez la zone **Server Key** (la zone rouge dans l'image ci-dessous).

* Copiez cette **Key** et conservez-la en lieu sûr, à un endroit facilement accessible.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-copy-server-key.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=47549ef555d012d68d2506b12e17d653" alt="Firebase : Cloud Messaging, clé de serveur" width="855" height="487" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/firebase-copy-server-key.png" />

À ce stade, nous avons fait tout ce qui est nécessaire dans Firebase pour activer les notifications push.

### Chapitre 2 : configuration de la console Google Play

Lorsque votre application est prête, vous créerez très probablement un projet Google Console pour gérer la page produit du Play Store. Voyons comment créer un projet Google Play et le lier au projet Firebase.

Commencez par accéder à la [page de la console Google Play](https://play.google.com/apps/publish) et créez un nouveau projet, comme illustré dans l'image suivante.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-console-page.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=b2764cf59e851638067b05739c9e0bfe" alt="Google Play : page de la console" width="1097" height="691" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-console-page.png" />

* Attribuez le **Title**.

<Note>
  Dans cet exemple, nous utilisons **Foo PlayFab App**. Veillez à choisir votre *propre* titre et votre propre nom de package lorsque vous suivez ce tutoriel.
</Note>

* Sélectionnez le bouton **Create** pour continuer.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-create-application.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=ac4858a57d9150e91dbbbe5502004fa1" alt="Google Play : créer une application" width="607" height="455" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-create-application.png" />

* La page **Google Play Console Project** s'ouvre.

* Sélectionnez **Services & APIs** dans le menu latéral.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-console-services-and-apis.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=89ed8f41596cf33bcb7d90201e0d799b" alt="Console Google Play : services et API" width="466" height="604" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-console-services-and-apis.png" />

* La page **Services configuration** s'ouvre.
* Repérez le panneau **Firebase Cloud Messaging**.
* Sélectionnez le bouton **Link a Sender ID**, comme illustré dans l'image suivante.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-fcm-link-sender-id.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=c38ceb863412115eadb603d7b045e2c4" alt="Google Play : panneau FCM, lier un Sender ID" width="497" height="650" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-fcm-link-sender-id.png" />

Pour lier le **Sender ID** :

* Utilisez la clé de serveur FCM que vous avez obtenue (et enregistrée) dans la console Firebase au chapitre précédent.
* Lorsque vous avez terminé, sélectionnez le bouton **Link**, comme illustré dans notre exemple.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-add-fcm-api-key.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=09e18dd1c6e80d94ffbbea649b7943ca" alt="Google Play : lier un Sender ID, ajouter la clé d'API FCM" width="627" height="360" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-add-fcm-api-key.png" />

* Prenez un moment pour vérifier que le **Sender ID** affiché dans la **Google Play Console** correspond à celui de la **Firebase Console**, comme illustré dans l'exemple ci-dessous.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-firebase-match-sender-id.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=4ddb06d507e22df96db776b3e74fd3c6" alt="Console Google Play et console Firebase : correspondance du Sender ID" width="1012" height="480" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/google-play-firebase-match-sender-id.png" />

À ce stade, le **Google Play Console Project** est correctement lié au **Firebase Project**.

### Chapitre 3 : configuration du titre PlayFab

L'objectif de ce chapitre est de vous montrer comment configurer les services PlayFab afin qu'ils puissent envoyer des notifications push au joueur en votre nom.

* Vous devez d'abord accéder à **Title settings** dans le menu Settings de votre titre.

* Sélectionnez l'onglet **Push Notifications**.

* Pour l'option Android, sélectionnez l'icône **Settings**.

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

* Votre **Google server API key** vous est demandée.

* Copiez celle que vous avez obtenue au moyen de la console Firebase, comme illustré dans l'exemple ci-dessous.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-firebase-add-server-api-key.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=37afb2d4a347067d24e0025d5db1c622" alt="PlayFab et console Firebase : ajouter la clé d'API serveur" width="1131" height="508" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-firebase-add-server-api-key.png" />

* Si tout est correct, une page indiquant que les **Push Notifications** sont **Active** s'affiche.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-push-notifications-android-active.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=968a305d91cfbd117a34cab960fd28d1" alt="PlayFab : notifications push actives" width="1366" height="835" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-push-notifications-android-active.png" />

La configuration de votre titre PlayFab est terminée.

### Chapitre 4 : configuration du projet Android Studio

Pour utiliser le JavaSDK PlayFab, vous aurez besoin du JavaSDK client PlayFab et de sa dépendance, Google GSON.

* Téléchargez ici la bibliothèque JAR du JavaSDK client PlayFab.

* Recherchez `client-sdk-*.jar`, ainsi que la documentation Java correspondante si nécessaire.

* Téléchargez la dernière version de Google GSON.

* Recherchez `gson-*.jar`.

* Gardez à portée de main les fichiers .jar mentionnés ci-dessus.

Commencez par créer un projet Android Studio classique.

* Vérifiez que le **Package name** correspond à celui que vous avez utilisé tout au long de ce tutoriel (dans Firebase, par exemple).

<Note>
  Pour les besoins de *cet* exemple, nous utilisons **com.foo.playfab.app**, mais n'oubliez pas de choisir votre propre nom de package et votre propre titre lorsque vous suivez ce tutoriel.
</Note>

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-new-project-add-app-name.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=e3a6f68571ac08857f7e1784409e18a4" alt="Android Studio : nouveau projet, ajouter le nom de l'application" width="1058" height="734" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-new-project-add-app-name.png" />

* Sélectionnez le **Minimum SDK** de votre choix.

* Sélectionnez ensuite le bouton **Next**.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-new-project-select-min-sdk.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=37acc7e58f141a91bbc54b598e764640" alt="Android Studio : nouveau projet, sélectionner le SDK minimal" width="916" height="740" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-new-project-select-min-sdk.png" />

Pour ce tutoriel, nous vous suggérons de commencer avec le modèle **Empty Activity**.

* Sélectionnez le modèle que vous souhaitez utiliser.

* Sélectionnez ensuite le bouton **Next**.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-new-project-select-template.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=26ee148418e7ea9ffb651dcef5b5dc72" alt="Android Studio : nouveau projet, sélectionner un modèle" width="916" height="740" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-new-project-select-template.png" />

* Configurez le modèle comme vous le souhaitez.

* Sélectionnez le bouton **Finish**.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-new-project-finish.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=f79cb46f260919d023e11c75d6ec9189" alt="Android Studio : nouveau projet, terminer" width="916" height="740" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-new-project-finish.png" />

Une fois le projet nouvellement créé ouvert :

* Passez à l'onglet **Project** **(1)**.

<Note>
  Au chapitre précédent, vous avez téléchargé le fichier de configuration `google-services.json` depuis la console Firebase. Utilisez-le pour l'étape suivante.
</Note>

* Vérifiez que ce fichier est placé dans le dossier **App** **(2)**.
* Accédez ensuite à **Tools (3)**.
* Sélectionnez **Firebase (4)**, comme illustré dans l'exemple ci-dessous.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-add-config-file.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=71251ee117e53ba0ea52d14dd5ab94b6" alt="Android Studio : ajouter le fichier de configuration au projet" width="873" height="847" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-add-config-file.png" />

L'**Firebase Assistant** s'ouvre sur le côté droit de la fenêtre.

* Repérez le dossier **Cloud Messaging** et sélectionnez **Set up Firebase Cloud Messaging**, comme illustré ci-dessous.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-firebase-set-up-cloud-messaging.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=c1ab23fad1d9ce59d043f8a817ff2634" alt="Android Studio : assistant Firebase, configurer Cloud Messaging" width="592" height="820" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-firebase-set-up-cloud-messaging.png" />

* Dans le **Firebase Notifications Assistant**, sélectionnez le bouton **Add FCM to your app (1)**, comme illustré dans l'image suivante.
* Une boîte de dialogue s'ouvre, indiquant que de nouvelles dépendances seront ajoutées au moyen de **Gradle**.
* Sélectionnez **Accept Changes (2)** pour accepter les modifications.

<Note>
  Malheureusement, les dépendances ajoutées automatiquement par le processus de synchronisation **Gradle** (**3**) sont incorrectes et provoqueront un échec!
</Note>

* Pour configurer correctement les dépendances, remplacez les lignes ajoutées automatiquement par les suivantes :

  `implementation 'com.google.firebase:firebase-core:16.0.3`\
  `implementation 'com.google.firebase:firebase-messaging:17.0.0`

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-firebase-add-fcm-to-your-app.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=6e068982118ca54c1c54aa211854059a" alt="Android Studio : assistant Firebase, ajouter FCM à votre application" width="1162" height="597" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-firebase-add-fcm-to-your-app.png" />

Une fois ce processus terminé :

* Vérifiez que le **Firebase Notifications Assistant** indique que les dépendances sont désormais correctement configurées **(1)**.

<Note>
  Au début de ce chapitre, nous avons obtenu les fichiers JAR nécessaires. Normalement, le fichier de build récupère automatiquement ces fichiers.
</Note>

* Pour vous assurer que ces fichiers JAR sont répertoriés dans le dossier **app/libs** **(2)**, sélectionnez tous les fichiers et cliquez dessus avec le bouton droit.
* Choisissez ensuite **Add as library... (3)**, comme illustré dans l'exemple ci-dessous.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-firebase-add-library.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=cac566cb854d201438a125b093700bf4" alt="Android Studio : assistant Firebase, ajouter en tant que bibliothèque" width="1315" height="881" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-firebase-add-library.png" />

* À l'aide du [générateur d'icônes de notification](https://romannurik.github.io/AndroidAssetStudio/icons-notification.html) d'Android Asset Studio, préparez les icônes et placez-les dans **app/src/main/res**.

* Dans l'exemple ci-dessous, l'icône s'appelle **ic\_stat\_blur\_on**.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-add-icons.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=44c75647824acbc7f6eed1764629fb79" alt="Android Studio : ajouter des icônes" width="495" height="393" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-add-icons.png" />

* Enfin, sélectionnez **Rebuild Project**.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-rebuild-project.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=af06d0cc414a65ca537ec1930463b0d4" alt="Android Studio : régénérer le projet" width="1471" height="849" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-studio-rebuild-project.png" />

Nous pouvons maintenant commencer à implémenter le code de réception et de gestion des notifications. Nous allons modifier (et créer si nécessaire) 4 fichiers :

1. **app/src/main/AndroidManifest.xml**
2. **app/src/main/java/..packagePath../MainActivity.java**
3. **app/src/main/java/..packagePath../FooAppFirebaseInstanceIdService.java**
4. **app/src/main/java/..packagePath../FooAppFirebaseMessagingService.java**

<Note>
  L'implémentation actuelle est conçue pour être aussi courte que possible, uniquement pour tester rapidement les notifications. Consultez les [guides FCM](https://firebase.google.com/docs/cloud-messaging/concept-options) pour connaître les pratiques exemplaires de qualité et des exemples d'implémentation plus complexes.
</Note>

#### AndroidManifest.xml

Dans le code suivant, remplacez tous les espaces réservés `MY_PACKAGE_IDENTIFIER` par votre *propre* identifiant de package.

```xml theme={null}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="MY_PACKAGE_IDENTIFIER">
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- The following block enables our custom Firebase Instance ID Service-->
        <service android:name=".FooAppFirebaseInstanceIdService" android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>

        <service
            android:name=".FooAppFirebaseMessagingService" android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

    </application>

</manifest>
```

#### MainActivity.java

Les espaces réservés suivants du code doivent être remplacés en fonction de votre scénario.

* `PLAYFAB_TITLE_ID`
  * Utilisez l'ID de votre titre obtenu dans PlayFab Game Manager.

* `PACKAGE_IDENTIFIER`
  * Utilisez l'identifiant de package Java correspondant à votre configuration.

```java theme={null}
package PACKAGE_IDENTIFIER;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.playfab.PlayFabClientAPI;
import com.playfab.PlayFabClientModels.*;
import com.playfab.PlayFabErrors;
import com.playfab.PlayFabSettings;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    // Invoked when activity is started
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Set PlayFab title
        PlayFabSettings.TitleId = "PLAYFAB_TITLE_ID";

        // Start login operation
        AsyncTask.execute(new Runnable() {
            @Override
            public void run() {
                if(login()) FooAppFirebaseInstanceIdService.setAllowRegisterForPush(true); // Ready to register for push notifications
            }
        });
    }

    public boolean login(){
        LoginWithAndroidDeviceIDRequest request = new LoginWithAndroidDeviceIDRequest();
        request.CreateAccount = true;

        // There are several approaches on getting unique android device id.
        // https://stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id
        request.AndroidDeviceId = "qwerty";

        PlayFabErrors.PlayFabResult<LoginResult> response = PlayFabClientAPI.LoginWithAndroidDeviceID(request);
        if(response.Error != null){
            Log.d("Foo PlayFab App",CompileErrorsFromResult(response.Error));
            return false;
        }
        return true;
    }

    // Utility method to compose an error message out of PlayFab result.
    private static String CompileErrorsFromResult(PlayFabErrors.PlayFabError error) {
        if (error == null)
            return null;

        String errorMessage = "";
        if (error.errorMessage != null)
            errorMessage += error.errorMessage;
        if (error.errorDetails != null)
            for (Map.Entry<String, List<String>> pair : error.errorDetails.entrySet())
                for (String msg : pair.getValue())
                    errorMessage += "\n" + pair.getKey() + ": " + msg;
        return errorMessage;
    }
}
```

#### FooAppFirebaseInstanceIdService.java

L'espace réservé du code ci-dessous doit être remplacé en fonction de votre scénario.

* `PACKAGE_IDENTIFIER`
  * L'identifiant de package Java correspondant à votre configuration.

```java theme={null}
package PACKAGE_IDENTIFIER;

import android.text.TextUtils;
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
import com.playfab.PlayFabClientAPI;
import com.playfab.PlayFabClientModels;
import com.playfab.PlayFabErrors;
import java.util.List;
import java.util.Map;

public class FooAppFirebaseInstanceIdService extends FirebaseInstanceIdService {

    private static String _token;

    private static boolean _allowRegistration;

    // This is invoked from activity that performs authentication.
    // Once login is complete this method is invoked.
    // If we have a pending token, we use it to register for push notifications
    public static void setAllowRegisterForPush(boolean isAllowed) {
        _allowRegistration = isAllowed;
        if (_allowRegistration && !TextUtils.isEmpty(_token)) {
            registerForPush(_token);
        }
    }

    // Invoked when firebase has fetched a token
    // If we already have logged in, we use new token to register for push
    @Override
    public void onTokenRefresh() {
        _token = FirebaseInstanceId.getInstance().getToken();
        if (_allowRegistration && !TextUtils.isEmpty(_token)) {
            registerForPush(_token);
        }
    }

    private static void registerForPush(String token) {
        PlayFabClientModels.AndroidDevicePushNotificationRegistrationRequest request = new PlayFabClientModels.AndroidDevicePushNotificationRegistrationRequest();
        request.DeviceToken = token;

        PlayFabErrors.PlayFabResult<PlayFabClientModels.AndroidDevicePushNotificationRegistrationResult> response = PlayFabClientAPI.AndroidDevicePushNotificationRegistration(request);

        if (response.Error != null) {
            Log.d("Foo PlayFab App", CompileErrorsFromResult(response.Error));
        }
    }

    // Utility method to compose an error message out of PlayFab result.
    private static String CompileErrorsFromResult(PlayFabErrors.PlayFabError error) {
        if (error == null)
            return null;

        String errorMessage = "";
        if (error.errorMessage != null)
            errorMessage += error.errorMessage;
        if (error.errorDetails != null)
            for (Map.Entry<String, List<String>> pair : error.errorDetails.entrySet())
                for (String msg : pair.getValue())
                    errorMessage += "\n" + pair.getKey() + ": " + msg;
        return errorMessage;
    }

}
```

#### FooAppFirebaseMessagingService.java

L'espace réservé du code ci-dessous doit être remplacé en fonction de votre scénario.

* `PACKAGE_IDENTIFIER`
  * L'identifiant de package Java correspondant à votre configuration.

```java theme={null}
package com.foo.playfab.app;

import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class FooAppFirebaseMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage message) {
        // Intercept the message here
        Log.d("Foo PlayFab App","Message received: "+message.getNotification().getBody());
    }
}
```

## Test

À ce stade, vous devriez pouvoir déployer l'application sur l'appareil.

* Une fois l'application démarrée, elle se connecte automatiquement et s'inscrit aux notifications push.

* Sélectionnez le bouton **Home** de votre appareil pour réduire l'application. *C'est important*, car cela nous permet de tester la notification qui arrive dans la barre d'état système.

* Accédez ensuite à la page Game Manager de votre titre PlayFab et utilisez le tableau de bord pour repérer la dernière **Push Registration**.

* Sélectionnez le **Player ID (1)**.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-playstream-event-log.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=8f7c5bacba75a46d48ac840dee5bec99" alt="PlayFab : PlayStream, journal des événements" width="524" height="330" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-playstream-event-log.png" />

Une page **Send Push Notification** s'ouvre pour ce joueur.

* Sélectionnez le bouton **Send Push Notification** **(1)**.

* Saisissez le **Title (2)**.

* Entrez le corps de votre message **(3)**.

* Validez vos modifications en sélectionnant le bouton **Send Push Notification** **(4)**.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-send-push-notification.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=e055e70076d9991525fe1668015c0760" alt="PlayFab : envoyer une notification push" width="1308" height="560" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-send-push-notification.png" />

* Vérifiez que le message arrive sur votre appareil.

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-app-receive-playfab-push-notification.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=dd679dd51527afebfb287bc2ab59d2c9" alt="Application Android : réception d'une notification push PlayFab" width="378" height="672" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/android-app-receive-playfab-push-notification.png" />

Si votre message arrive, les messages sont correctement distribués dans votre application.

À ce stade, l'intégration est réussie. Vous pouvez utiliser **FooAppFirebaseMessagingService** pour gérer le message entrant pendant l'exécution de votre application.


## Related topics

- [Prise en main d'Economy v2, d'Unity IAP et d'Android](/fr-CA/services/playfab/economy-monetization/economy-v2/tutorials/getting-started-with-unity-and-android.md)
- [Notifications push pour Android](/fr-CA/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-android.md)
- [Prise en main de Multiplayer sur Android](/fr-CA/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/android-specific-requirements.md)
- [Démarrage rapide des notifications push](/fr-CA/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart.md)
- [Prise en main sur Android](/fr-CA/services/playfab/multiplayer/networking/android-specific-requirements.md)
