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

# Démarrage rapide des notifications push

> Configurez les notifications push PlayFab pour les canaux iOS APNS et Android GCM via Game Manager ou l'API Admin SetupPushNotification, avec un routage via Amazon SNS.

Les notifications push de PlayFab reposent sur la liaison de trois systèmes principaux :

1. Le système d'exploitation de l'appareil du joueur (Android, iOS, etc.)
2. Le canal propre au fournisseur (Google, Apple, etc.)
3. Le routage multiplateforme des messages (PlayFab via Amazon Simple Notification Service (SNS)).

<Note>
  Si l'un de ces systèmes n'est plus lié, les clients cessent de recevoir des notifications. Il est assez facile de modifier accidentellement l'un des trois systèmes et de rompre la liaison. De plus, il est difficile de savoir, à un point donné du flux, si tous les systèmes sont correctement configurés.
</Note>

## Le système de routage push de PlayFab

Chaque titre PlayFab peut activer un canal de notification Google (GCM) et un canal de notification Apple Push (APNS, APNS\_SANDBOX) à un moment donné. Ceux-ci peuvent être configurés de l'une des deux manières suivantes :

1. À l'aide de l'interface utilisateur de **Game Manager**, sous **Settings -> Push Notifications**.
2. À l'aide de l'**API Admin PlayFab** : [SetupPushNotification](xref:titleid.playfabapi.com.admin.title-widedatamanagement.setuppushnotification).

Pour des informations de configuration plus détaillées, lisez ces tutoriels :

* [Notifications push pour Android](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-android)
* [Notifications push pour iOS](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-ios)

## Messages push en jeu

Les messages push varient selon le moteur ou la plateforme de développement. Toutefois, le moyen le plus simple de recevoir des notifications push consiste à utiliser un projet Unity avec notre SDK et le plug-in Firebase Cloud Messaging (FCM) pour Android, ou simplement Unity pour iOS.

* **Réception de notifications push sur Android** : nécessite un plug-in. Le plug-in le mieux pris en charge est le plug-in FCM natif.
* **Réception de notifications push sur iOS** : *ne nécessite pas* de plug-in pour les messages push de base.

<Tip>
  Consultez la documentation FCM pour savoir comment configurer le [plug-in FCM Unity](https://firebase.google.com/docs/cloud-messaging/unity/client) ou les notifications push dans [Android Studio](https://firebase.google.com/docs/cloud-messaging/android/client).
</Tip>

## Test de la configuration

Après avoir configuré votre titre et votre client, vous pouvez tester votre configuration à l'aide de l'API serveur PlayFab [SendPushNotification](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification). Cette API vous permet d'envoyer autant de notifications push que nécessaire sans frais supplémentaires.

Vous pouvez utiliser le service CloudScript de PlayFab comme environnement d'API serveur rapide et sécurisé. Vous pouvez ensuite envoyer des notifications push selon vos besoins.

Pour tester votre configuration avec cette méthode, chargez ou ajoutez le code de l'exemple suivant au CloudScript de votre titre.

### Exemple

Prenons le scénario suivant :

* Les joueurs de votre titre peuvent accéder à un classement basé sur des statistiques de rang.

* Chaque joueur peut payer 1 unité de la monnaie CH et défier un autre joueur situé jusqu'à 5 positions de lui.

Considérez d'abord une monnaie virtuelle comme illustré dans l'exemple de capture d'écran ci-dessous (consultez le tutoriel [Monnaies](/fr/services/playfab/economy-monetization/economy-v2/tutorials/currencies) pour savoir comment définir une monnaie virtuelle).

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-new-currency.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=529f8a8499e64af54013e73f64e933fd" alt="PlayFab Economy : monnaies, nouvelle monnaie" width="1800" height="969" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-new-currency.png" />

Considérez maintenant les statistiques suivantes définies pour chaque joueur (consultez le tutoriel [Accès aux résultats de tournois archivés](/fr/services/playfab/community/leaderboards/tournaments-leaderboards/accessing-archived-tournament-results) pour savoir comment générer un classement de test).

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-statistics-player-rank.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=dfd2bdb1c0160f95676fd7fbf69781af" alt="Statistiques de joueur PlayFab : rang" width="1026" height="456" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-statistics-player-rank.png" />

Une fois ces prérequis configurés, vous pouvez mettre en place un système de défis par notification push.

Le code client suivant appelle le CloudScript `ChallengePlayer`.

```csharp theme={null}
public void ChallengeRandomClosePlayer(string currentPlayerId) {
    PlayFabClientAPI.GetLeaderboardAroundPlayer(new GetLeaderboardAroundPlayerRequest() {
        MaxResultsCount = 10,
        StatisticName = "Rank",
        PlayFabId = currentPlayerId,
    }, result => OnLeaderboardLoaded(result,currentPlayerId),OnPlayFabError);
}

private void OnLeaderboardLoaded(GetLeaderboardAroundPlayerResult leaderboard, string currentPlayerId) {
    var index = (int)(UnityEngine.Random.value * (leaderboard.Leaderboard.Count-1));
    if (leaderboard.Leaderboard[index].PlayFabId == currentPlayerId)
        index = (index + 1) % leaderboard.Leaderboard.Count;
    var targetId = leaderboard.Leaderboard[index].PlayFabId;

    PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest() {
        FunctionName = "ChallengePlayer",
        FunctionParameter = new Dictionary<string, object>() {
            { "TargetId", targetId }
        }
    }, null, OnPlayFabError);
}

public void OnPlayFabError(PlayFabError obj) {
    Debug.Log(obj.GenerateErrorReport());
}
```

Le code CloudScript `ChallengePlayer` traite la requête, valide l'état du classement et envoie la notification push de défi à la cible.

```javascript theme={null}
handlers.ChallengePlayer = function (args) {
    var targetId = args.TargetId;
    var leaderboard = server.GetLeaderboardAroundUser({
        MaxResultsCount : 10,
        PlayFabId : currentPlayerId,
        StatisticName : "Rank"
    });

    for(var i = 0; i < leaderboard.Leaderboard.length; i++) {
        var target = leaderboard.Leaderboard[i];
        if(target.PlayFabId !== targetId) continue;

        // subtract virtual currency from current player
        server.SubtractUserVirtualCurrency({
            VirtualCurrency : "CH",
            PlayFabId : currentPlayerId,
            Amount : 1
        });

        // get current player profile
        var profile = server.GetPlayerProfile({
            PlayFabId : currentPlayerId
        }).PlayerProfile;

        // try to send push notification
        try {
            server.SendPushNotification({
                Recipient : targetId,
                Package : {
                    Message : `${profile.DisplayName} challenges you for a battle!`,
                    Title: "You have been challenged",
                }
            });
        } catch (ex) {
            // Target player has not registered for Push Notifications
        }
        return;
    }
}
```

## Utilisation des notifications push

La possibilité d'utiliser des notifications push est un outil formidable. En cas d'*abus*, toutefois, les utilisateurs peuvent refuser les notifications futures, voire *abandonner complètement le jeu*.

Utilisées judicieusement, en revanche, les notifications push peuvent être l'un de vos meilleurs outils pour développer et entretenir la communauté de votre jeu.

Les notifications push reposent sur un protocole de messages de type *fire and forget* (envoyer et oublier) qui ne garantit pas la remise.

<Note>
  N'oubliez pas qu'il n'existe *aucune garantie* que vos joueurs recevront ou ouvriront votre message, ni qu'ils y réagiront. Compte tenu de cette réserve, il est conseillé d'utiliser les messages comme une fonctionnalité *bonus*, plutôt que comme un élément essentiel de votre boucle de jeu.
</Note>

Sur les plateformes iOS, le système d'exploitation présente une seule fois une boîte de dialogue permettant à l'utilisateur de déterminer l'état des notifications push. Une fois que l'utilisateur a fait son choix initial, ce paramètre est conservé jusqu'à ce que :

* L'application soit mise à jour ou réinstallée.

* L'utilisateur modifie les paramètres depuis le menu des paramètres de son téléphone.

Pour les applications Android, les notifications sont activées par défaut et peuvent être activées ou désactivées à volonté depuis le client.

<Tip>
  Il est conseillé de réinitialiser vos écouteurs de notifications à chaque session.
</Tip>

## Ressources

Les ressources suivantes fournissent des informations supplémentaires sur les sujets abordés dans ce démarrage rapide :

* [Firebase Unity SDK](https://firebase.google.com/docs/unity/setup) : une solution FCM tout-en-un pour Unity. Ce SDK permet notamment de recevoir et de traiter les notifications push envoyées via FCM.
* [Push It Real Good: How to Get Players to Say Yes to Push Notifications](https://blog.playfab.com/blog/push-it-real-good-how-get-players-say-yes-push-notifications/) : ce billet de blog présente des stratégies et techniques supplémentaires pour l'utilisation des notifications push.
* [Push Notifications](https://blog.playfab.com/blog/push-sep-17) : ce billet de blog décrit la mise à niveau la plus récente des fonctionnalités push et le passage à FCM comme plug-in principal pour Android.
* [Démarrage rapide Postman](/fr/services/playfab/sdks/postman/postman-quickstart) : ce démarrage rapide vous montre comment tester nos API à l'aide de Postman.


## Related topics

- [Notifications push pour Android](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-android.md)
- [Notifications push pour iOS](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-ios.md)
- [PFPlatformSpecificRegisterForIOSPushNotificationRequest](/fr/services/playfab/api-references/c/pfplatformspecifictypes/structs/pfplatformspecificregisterforiospushnotificationrequest.md)
- [Modèles de notifications push](/fr/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notification-templates.md)
- [PFPlatformSpecificAndroidDevicePushNotificationRegistrationRequest](/fr/services/playfab/api-references/c/pfplatformspecifictypes/structs/pfplatformspecificandroiddevicepushnotificationregistrationrequest.md)
