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

# Notificaciones push para iOS

> Configure las notificaciones push de PlayFab para iOS creando un certificado APNS, exportándolo a .p12 y cargándolo en Game Manager para su entrega.

# Notificaciones push para iOS

## Requisitos previos

En este tutorial se da por hecho que está familiarizado con los conceptos que se tratan en nuestro [Inicio rápido de notificaciones push](/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart).

## Configuración del canal de notificaciones de Apple

1. Asegúrese de tener un certificado activo de desarrollo de iOS (APNS\_SANDBOX) o de producción (APNS). Si no lo tiene, cree uno desde el **Apple Developer Portal** en **Certificates, Identities and Profiles**.

<img src="https://mintcdn.com/microsoft-4404708b/59DtlsYffqki5YJ_/images/playfab/live-service-management/game-configuration/title-communications/tutorials/apple-request-cert.png?fit=max&auto=format&n=59DtlsYffqki5YJ_&q=85&s=084b20da097ce4b85cf11ebd1e4c5ef6" alt="Solicitud de certificado APNS de Apple" width="1430" height="776" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/apple-request-cert.png" />

2. Exporte el certificado que prefiera (de desarrollo o de producción):
   * Comience descargando una copia de su certificado desde el **Apple Developer Portal**, en **Certificates, Identities and Profiles**. Esto creará un archivo **.cer**.

   * Abra e instale el certificado en su **Keychain Access**.

   * Vea el certificado instalado en la subcategoría **Certificates**.

   * Exporte su **certificado de Keychain Access** al formato **.p12**.

     <img src="https://mintcdn.com/microsoft-4404708b/59DtlsYffqki5YJ_/images/playfab/live-service-management/game-configuration/title-communications/tutorials/apple-export-keychain-cert.webp?fit=max&auto=format&n=59DtlsYffqki5YJ_&q=85&s=977aa4049b76ec126b67aad202f64125" alt="Exportación del certificado de Keychain Access de Apple" width="1281" height="413" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/apple-export-keychain-cert.webp" />

   * Convierta el **archivo .p12** en un **archivo .pem** mediante el siguiente comando de consola:
     * `openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts`

   * Una vez que tenga el **archivo .pem**, puede cargarlo directamente a través de **Game Manager** de PlayFab, en la **configuración del título** > **Push Notifications**.

   * Como alternativa, use el generador siguiente para crear una solicitud JSON para `SetupPushNotification`.

### Generador de solicitudes JSON para SetupPushNotification

El generador de solicitudes usa la siguiente información para crear una solicitud JSON:

* **Plataforma**: use uno de los valores siguientes: APNS (iOS), APNS\_SANDBOX (iOS), GCM (Android)
* **Nombre de la aplicación**: escriba el nombre de la aplicación que envía el mensaje.

<Note>
  Los nombres de aplicación solo pueden estar formados por letras ASCII mayúsculas y minúsculas, números, guiones bajos, guiones y puntos, y deben tener entre 1 y 256 caracteres de longitud. *Además*, deben ser *únicos*.
</Note>

* **Certificado PEM / clave de API**: para iOS (APNS o APNS\_SANDBOX), use el contenido completo de su archivo PEM.

Una vez generado el JSON, úselo para ejecutar una llamada a `SetupPushNotification`. La respuesta debería tener un aspecto similar al del ejemplo siguiente.

```json theme={null}
{
    “code” : 200,
    “status” : “OK”,
    “data” :
        {
             “ARN” : “arn:*******/GCM/your_game_name”
        }
}
```

¡Enhorabuena! Ha configurado el canal de mensajería de iOS de su título.

## Registro del cliente de iOS para notificaciones push

En el caso de iOS, debe basarse en el comportamiento predeterminado con el que iOS controla las notificaciones push, ya que PlayFab no ofrece por el momento una implementación nativa en Unity.

De forma predeterminada, las notificaciones que se reciban mientras el juego esté en segundo plano se enrutarán al área de **notificaciones**.

Por el contrario, las notificaciones que se reciban mientras el juego sea la aplicación activa se recibirán de forma silenciosa y no estarán visibles en el área de **notificaciones**.

* El siguiente código del ejemplo se ejecuta en `client Start()`.

```csharp theme={null}
// must be called before trying to obtain the push token
// an asynchronous call with no callback into native iOS code that takes a moment or two before
// the token is available. (so spin and wait, or call this one early on)
// this will always return null if your app is not signed
UnityEngine.iOS.NotificationServices.RegisterForNotifications(UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Sound, true);
```

* En este punto, si el usuario ha aceptado recibir notificaciones, podemos llamar a la API de PlayFab [RegisterForIOSPushNotification](xref:titleid.playfabapi.com.client.platformspecificmethods.registerforiospushnotification).

```csharp theme={null}
byte[] token = UnityEngine.iOS.NotificationServices.deviceToken;
if(token != null)
{
    RegisterForIOSPushNotificationRequest request = new RegisterForIOSPushNotificationRequest();
    request.DeviceToken = System.BitConverter.ToString(token).Replace("-", "").ToLower();
    PlayFabClientAPI.RegisterForIOSPushNotification(request, (RegisterForIOSPushNotificationResult result) =>
    {
        Debug.Log("Push Registration Successful");
    }, OnPlayFabError);
}
else
{
    Debug.Log("Push Token was null!");
}
```

* Si no se produjo ningún error, ¡enhorabuena! Su cliente de iOS se ha vinculado correctamente al canal de notificaciones de Apple de su título.

## Solución de problemas en iOS

* [Compruebe que tiene archivos .pem válidos](https://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html).
* Asegúrese de que XCode usa para firmar su aplicación el mismo certificado que se usó en `SetupPushNotification`.
* Compruebe que la API de notificaciones push está habilitada para su compilación en XCode.
* Compruebe que su certificado de firma coincide con la plataforma de PlayFab. Al ejecutar **[SetupPushNotification](xref:titleid.playfabapi.com.admin.title-widedatamanagement.setuppushnotification)**, use `OverwriteOldARN = true` para volver a enlazar el canal a una nueva plataforma. Solo puede haber *un* entorno de iOS (APNS o APNS\_SANDBOX) activo en un título en un momento dado.

## Soporte adicional

Para obtener ayuda, informar de errores de ejemplo y plantear preguntas relacionadas, escríbanos en nuestros [foros](https://community.playfab.com/index.html).

<Note>
  Actualmente, solo ofrecemos soporte de nuestros servicios para el flujo estándar que se describe en este documento. Si su equipo busca funcionalidad adicional con otros servicios o complementos de notificaciones push habituales, ¡háganoslo saber! Nos encanta recibir comentarios de nuestra comunidad de desarrolladores.
</Note>


## Related topics

- [Inicio rápido de notificaciones push](/es/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart.md)
- [Notificaciones push para Android](/es/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-android.md)
- [Notificaciones push](/es/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/index.md)
- [Plantillas de notificaciones push](/es/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notification-templates.md)
- [PFPushNotificationsServerSendPushNotificationAsync](/es/services/playfab/api-references/c/pfpushnotifications/functions/pfpushnotificationsserversendpushnotificationasync.md)
