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

# Notificações por push para iOS

> Configure as notificações por push do PlayFab para iOS criando um certificado APNS, exportando-o para .p12 e fazendo upload dele no Game Manager para entrega.

# Notificações por push para iOS

## Pré-requisitos

Este tutorial pressupõe que você esteja familiarizado com os conceitos abordados no nosso [Início rápido de notificações por push](/pt-BR/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart).

## Configurar o canal de notificação da Apple

1. Verifique se você tem um certificado ativo de desenvolvimento (APNS\_SANDBOX) ou de produção (APNS) do iOS. Se não tiver, crie um no **Apple Developer Portal**, em **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="Solicitar certificado APNS da Apple" width="1430" height="776" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/apple-request-cert.png" />

2. Exporte o certificado de sua escolha (desenvolvimento ou produção):
   * Comece baixando uma cópia do seu certificado no **Apple Developer Portal**, em **Certificates, Identities and Profiles**. Isso criará um arquivo **.cer**.

   * Abra e instale o certificado no **Keychain Access**.

   * Exiba o certificado instalado na subcategoria **Certificates**.

   * Exporte o **Keychain Access Certificate** para o 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="Exportar o Keychain Access Certificate da Apple" width="1281" height="413" data-path="images/playfab/live-service-management/game-configuration/title-communications/tutorials/apple-export-keychain-cert.webp" />

   * Converta o **arquivo .p12** em um **arquivo .pem** usando o seguinte comando de console:
     * `openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts`

   * Depois de obter o **arquivo .pem**, você pode fazer upload dele diretamente pelo **Game Manager** do PlayFab em **Title's settings** > **Push Notifications**.

   * Como alternativa, use o gerador abaixo para criar uma solicitação JSON para `SetupPushNotification`.

### Gerador de solicitação JSON para SetupPushNotification

O gerador de solicitações usa as seguintes informações para criar uma solicitação JSON:

* **Platform**: use um dos seguintes valores: APNS (iOS), APNS\_SANDBOX (iOS), GCM (Android)
* **Application Name**: insira o nome do aplicativo que está enviando a mensagem.

<Note>
  Os nomes de aplicativo devem ser compostos apenas por letras ASCII maiúsculas e minúsculas, números, sublinhados, hifens e pontos, e devem ter entre 1 e 256 caracteres. Eles *também* devem ser *exclusivos*.
</Note>

* **PEM Certificate / API Key**: para iOS (APNS ou APNS\_SANDBOX), use o conteúdo completo do seu arquivo PEM.

Depois que o JSON for gerado, use-o para executar uma chamada a `SetupPushNotification`. A resposta deverá ser semelhante ao exemplo a seguir.

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

Parabéns! Você configurou o canal de mensagens do iOS do seu título.

## Registrar seu cliente iOS para push

Para o iOS, você precisa contar com o comportamento padrão do iOS para lidar com notificações por push, pois o PlayFab não oferece uma implementação nativa no Unity no momento.

Por padrão, as notificações recebidas enquanto o jogo está em segundo plano serão encaminhadas para a área de **Notificações**.

Por outro lado, as notificações recebidas enquanto o jogo é o aplicativo ativo serão recebidas silenciosamente e não ficarão visíveis na área de **Notificações**.

* O código a seguir do exemplo é executado em `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);
```

* Nesse ponto, se o usuário tiver aceitado receber notificações, poderemos chamar a API do 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!");
}
```

* Se nenhum erro ocorrer, parabéns! Seu cliente iOS foi vinculado com êxito ao canal de notificações da Apple do seu título.

## Solução de problemas do iOS

* [Verifique se você tem arquivos .pem válidos](https://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html).
* Verifique se o mesmo certificado usado em `SetupPushNotification` é usado pelo XCode para assinar seu aplicativo.
* Verifique se a API Push Notification está habilitada para o seu build no XCode.
* Verifique se o certificado de assinatura corresponde à plataforma do PlayFab. Ao executar **[SetupPushNotification](xref:titleid.playfabapi.com.admin.title-widedatamanagement.setuppushnotification)**, use `OverwriteOldARN = true` para vincular novamente o canal a uma nova plataforma. Somente *um* ambiente iOS (APNS ou APNS\_SANDBOX) pode estar ativo em um título por vez.

## Suporte adicional

Para obter ajuda, exemplos de bugs e perguntas relacionadas, escreva para nós nos nossos [fóruns](https://community.playfab.com/index.html).

<Note>
  No momento, só oferecemos suporte aos nossos serviços para o fluxo padrão descrito neste documento. Se sua equipe estiver procurando funcionalidades adicionais com outros serviços ou plug-ins de push comuns, informe-nos! Adoramos receber feedback da nossa comunidade de desenvolvedores.
</Note>


## Related topics

- [Início rápido de notificações por push](/pt-BR/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/quickstart.md)
- [Notificações por push](/pt-BR/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/index.md)
- [Notificações por push para Android](/pt-BR/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-android.md)
- [Modelos de notificação por push](/pt-BR/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notification-templates.md)
- [Introdução ao Android Studio e às notificações por push](/pt-BR/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/getting-started-android-studio-push-notifications.md)
