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

# Inicio rápido de notificaciones push

> Configure las notificaciones push de PlayFab para los canales APNS de iOS y GCM de Android mediante Game Manager o la API de administración SetupPushNotification con enrutamiento de Amazon SNS.

Las notificaciones push de PlayFab se habilitan mediante la vinculación de tres sistemas principales:

1. El sistema operativo del dispositivo del jugador (Android, iOS, etc.)
2. El canal específico del proveedor (Google, Apple, etc.)
3. El enrutamiento de mensajes multiplataforma (PlayFab a través de Amazon Simple Notification Service (SNS)).

<Note>
  Si alguno de estos sistemas se desvincula, los clientes dejarán de recibir notificaciones. Es bastante fácil cambiar accidentalmente uno de los tres sistemas y acabar rompiendo el vínculo. Además, es difícil saber en un punto concreto del flujo si todos los sistemas están configurados correctamente.
</Note>

## El sistema de enrutamiento de notificaciones push de PlayFab

Cada título de PlayFab puede habilitar un canal de notificaciones de Google (GCM) y uno de Apple Push (APNS, APNS\_SANDBOX) en un momento dado. Estos se pueden configurar de una de estas dos maneras:

1. Mediante la interfaz de usuario de **Game Manager**, en **Settings -> Push Notifications**.
2. Mediante la **API de administración de PlayFab**: [SetupPushNotification](xref:titleid.playfabapi.com.admin.title-widedatamanagement.setuppushnotification).

Para obtener información de configuración más detallada, lea estos tutoriales:

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

## Mensajes push en el juego

Los mensajes push varían según el motor o la plataforma de desarrollo. Sin embargo, la manera más fácil de recibir notificaciones push es usar un proyecto de Unity con nuestro SDK y el complemento Firebase Cloud Messaging (FCM) para Android, o solo Unity para iOS.

* **Recepción de notificaciones push en Android**: requiere un complemento. El complemento mejor compatible es el complemento nativo de FCM.
* **Recepción de notificaciones push en iOS**: *no* requiere un complemento para los mensajes push básicos.

<Tip>
  Consulte la documentación de FCM para obtener instrucciones sobre cómo configurar el [complemento de FCM para Unity](https://firebase.google.com/docs/cloud-messaging/unity/client), o las notificaciones push en [Android Studio](https://firebase.google.com/docs/cloud-messaging/android/client).
</Tip>

## Prueba de la configuración

Después de configurar su título y su cliente, puede probar la configuración mediante la API de servidor de PlayFab [SendPushNotification](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification). Esta API le permite enviar tantas notificaciones push como necesite sin costo adicional.

Puede usar el servicio CloudScript de PlayFab como un entorno de API de servidor rápido y seguro. Desde ahí, se pueden enviar notificaciones push según sea necesario.

Para usar este método para probar la configuración, cargue o anexe el código del ejemplo siguiente al CloudScript de su título.

### Ejemplo

Considere el siguiente escenario:

* Los jugadores de su título pueden acceder a una tabla de clasificación basada en estadísticas de posición.

* Cada jugador puede pagar 1 unidad de la moneda CH y desafiar a otro jugador que esté hasta 5 posiciones de distancia del jugador actual.

En primer lugar, considere una moneda virtual como la que se muestra en la captura de pantalla de ejemplo siguiente (consulte el tutorial [Monedas](/services/playfab/economy-monetization/economy-v2/tutorials/currencies) para obtener información sobre cómo definir una moneda virtual).

<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 - Monedas - Nueva moneda" width="1800" height="969" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-new-currency.png" />

Ahora, considere las siguientes estadísticas definidas para cada jugador (consulte el tutorial [Acceso a los resultados de torneos archivados](/services/playfab/community/leaderboards/tournaments-leaderboards/accessing-archived-tournament-results) para obtener información sobre cómo generar una tabla de clasificación de prueba).

<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="Estadísticas de jugador de PlayFab - Posición" width="1026" height="456" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/playfab-statistics-player-rank.png" />

Una vez configurados estos requisitos previos, puede configurar un sistema de desafíos por notificación push.

El siguiente código de cliente llamará al 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());
}
```

El código de CloudScript `ChallengePlayer` controlará la solicitud, validará el estado de la tabla de clasificación y enviará la notificación push de desafío al destinatario.

```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;
    }
}
```

## Uso de las notificaciones push

Poder usar notificaciones push es un poder formidable. Sin embargo, cuando se *abusa* de él, puede provocar que los usuarios rechacen futuras notificaciones, o incluso que *abandonen un juego por completo*.

No obstante, si se usan con criterio, las notificaciones push pueden ser una de sus mejores herramientas para crear y mantener la comunidad de su juego.

Las notificaciones push son un protocolo de mensajes de tipo *enviar y olvidar* que no garantiza la entrega.

<Note>
  Recuerde que *no hay garantía* de que sus jugadores reciban, abran o interactúen con su mensaje. Teniendo en cuenta esa advertencia, es una buena práctica usar los mensajes como funcionalidad *adicional*, en lugar de como una parte crítica del bucle de juego.
</Note>

En las plataformas iOS, el sistema operativo muestra a las aplicaciones un cuadro de diálogo único que permite al usuario determinar el estado de las notificaciones push. Después de que el usuario haga su selección inicial, esta configuración se conservará hasta que:

* La aplicación se actualice o se reinstale.

* El usuario cambie la configuración desde el menú de ajustes de su teléfono.

En las aplicaciones Android, las notificaciones están habilitadas de forma predeterminada y se pueden activar y desactivar a voluntad desde el cliente.

<Tip>
  Es una buena práctica reinicializar los agentes de escucha de notificaciones en cada sesión.
</Tip>

## Recursos

Los recursos siguientes proporcionan información adicional sobre los temas de este inicio rápido:

* [SDK de Firebase para Unity](https://firebase.google.com/docs/unity/setup): una solución de FCM todo en uno para Unity. Este SDK, entre todas sus demás características, le permite recibir y procesar notificaciones push enviadas a través de 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/): esta entrada de blog detalla estrategias y técnicas adicionales para usar notificaciones push.
* [Push Notifications](https://blog.playfab.com/blog/push-sep-17): esta entrada de blog describe la actualización más reciente de la funcionalidad de notificaciones push y el cambio a FCM como complemento principal para Android.
* [Inicio rápido de Postman](/services/playfab/sdks/postman/postman-quickstart): este inicio rápido le muestra cómo probar nuestras API con Postman.


## Related topics

- [Notificaciones push para Android](/es/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-android.md)
- [Notificaciones push para iOS](/es/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-ios.md)
- [Plantillas de notificaciones push](/es/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notification-templates.md)
- [PFPlatformSpecificRegisterForIOSPushNotificationRequest](/es/services/playfab/api-references/c/pfplatformspecifictypes/structs/pfplatformspecificregisterforiospushnotificationrequest.md)
- [Documentación de administración de servicios en vivo de PlayFab](/es/services/playfab/live-service-management/index.md)
