# OutSystems

## Instalando o plugin Pushwoosh

Comece instalando o plugin Pushwoosh a partir do [OutSystems Forge](https://www.outsystems.com/forge/component-overview/1556/pushwoosh-plugin). A maneira mais rápida de fazer isso é ir para a aba OutSystems em seu ambiente de desenvolvimento e instalá-lo a partir de lá.

### Configurando o Pushwoosh

Você precisará configurar o Pushwoosh para cada uma das plataformas que você irá suportar. Uma vez que sua configuração esteja concluída, você terá um Código de Aplicação do Pushwoosh que será usado com seu plugin.

#### Para iOS

Aprenda como [configurar o Pushwoosh para iOS](/pt/developer/first-steps/connect-messaging-services/ios-configuration/ios-platform-configuration/).

#### Para Android

Aprenda como [configurar o Pushwoosh para Android](/pt/developer/first-steps/connect-messaging-services/android-configuration/android-firebase-configuration/).

### Adicionando o plugin Pushwoosh à sua aplicação

1. Em sua aplicação, use "Manage Dependencies…" para adicionar uma referência ao plugin Pushwoosh.

<img src="/outsystems.webp" alt=""/>

2. Adicione o bloco "PushwooshNotifications" a:

   - O bloco "Layout" se sua aplicação não tiver login
   - O bloco "LayoutBlank" se sua aplicação tiver login

   Ao adicionar o bloco "PushwooshNotifications", evite adicioná-lo dentro de placeholders, pois alguns estão disponíveis apenas em tempo de design e, em tempo de execução, o Pushwoosh não funcionará.

3. Defina os seguintes parâmetros no PushwooshNotifications:

   - **PushwooshApplicationCode:** O Código Pushwoosh que você obteve após criar a aplicação no Pushwoosh.
   - **FCMSenderId:** O número de identificação que você obteve ao configurar o Android. Você pode deixar isso em branco se sua aplicação estiver disponível apenas para iOS.
   - **NotificationReceivedEvent (Opcional):** Um evento que é chamado quando uma notificação é recebida enquanto a aplicação está em primeiro plano.
   - **NotificationOpenedEvent (Opcional):** Um evento que é chamado quando um usuário clica em uma notificação em seu dispositivo.

Se você estiver usando o plugin Pushwoosh em seu aplicativo Android, faça o seguinte:

1. [Obtenha o `google-services.json`](https://support.google.com/firebase/answer/7015592) do Firebase. O nome do pacote dos serviços do Google deve corresponder ao identificador do aplicativo da aplicação OutSystems que está sendo construída.
2. Crie um arquivo zip contendo o `google-services.json` na raiz.
3. Faça o upload do arquivo "google-services.zip" do passo anterior para sua aplicação OutSystems e certifique-se de:
   - Definir o "Name" como "google-services.zip"
   - Definir "Deploy to Target Directory" como "google-services"

<img src="/outsystems2.webp" alt=""/>

Para que seu dispositivo receba notificações push, você precisará registrá-lo. Se seus usuários precisarem fazer login para usar a aplicação, vá para a tela "Login" e edite a ação "Login".

<img src="/outsystems3.webp" alt=""/>


Adicione o código para registrar o dispositivo após a ação "DoLogin". Deve se parecer com algo assim:

<img src="/outsystems4.webp" alt=""/>

Se sua aplicação não tiver login, você pode adicionar este código ao evento `OnInitializeOver` no bloco `PushwooshNotifications`.

<img src="/outsystems5.webp" alt=""/>

Neste manipulador de eventos, chame a ação `RegisterDevice`.

<img src="/outsystems6.webp" alt=""/>

Se você está gerando um aplicativo móvel iOS usando um certificado de desenvolvedor, você precisará adicionar uma preferência à propriedade Extensibility Configurations do seu módulo OutSystems:

```json
{
  "preferences": {
    "global": [
      {
        "name": "aps-environment",
        "value": "development"
      }
    ]
  }
}
```

<img src="/outsystems7.webp" alt=""/>

Esta preferência será adicionada ao seu arquivo de entitlements (saiba mais sobre entitlements na [documentação do Desenvolvedor Apple](https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AboutEntitlements.html)).

Se você está gerando um aplicativo móvel iOS usando um certificado de produção, não precisará especificar nenhuma preferência, pois o valor padrão da preferência `aps-environment` no OutSystems é `production`.

Sua aplicação agora está pronta para receber notificações push. [Configure e gere seu aplicativo móvel](https://success.outsystems.com/documentation/10/delivering_mobile_apps/generate_and_distribute_your_mobile_app/) e instale-o em seu dispositivo. Neste ponto, você pode usar a interface do Pushwoosh para enviar notificações para seu aplicativo e garantir que tudo esteja configurado corretamente. Note que você não verá uma notificação se o aplicativo estiver em execução. Em vez disso, o evento `NotificationReceivedEvent` é acionado imediatamente.

### Enviando notificações

Para enviar notificações, você precisa de um [Token de Acesso à API](/pt/developer/api-reference/api-access-token/) do Pushwoosh. Crie um acessando o console do Pushwoosh, vá para "API Access" e clique em "Generate new access token".

<img src="/outsystems8.webp" alt=""/>

Para enviar uma notificação para todos os dispositivos, use a ação `SendPushNotificationToAll`.

<img src="/outsystems9.webp" alt=""/>

Esta ação recebe os seguintes parâmetros:

- **PushwooshApplicationCode:** O Código Pushwoosh que você obteve após criar a aplicação no Pushwoosh.
- **ApiAccessToken:** O Token de Acesso à API do Pushwoosh obtido anteriormente.
- **Message:** O texto da mensagem que você deseja enviar.
- **Badge:** Um número que é exibido no ícone da aplicação iOS.
- **Deeplink:** Um deep link para enviar com a notificação. Aprenda [como definir deep links](https://success.outsystems.com/documentation/how_to_guides/development/how_to_define_mobile_app_deep_links/).

Por exemplo, se você usar esta ação para enviar a mensagem "Hello from OutSystems" para uma aplicação chamada "PushTest", o seguinte seria mostrado no iOS:

<img src="/outsystems10.webp" alt=""/>

### Informações adicionais

- Se o seu aplicativo estiver em execução, a notificação não aparecerá no dispositivo. Em vez disso, ela é enviada para o aplicativo, e o evento `NotificationReceivedEvent` é acionado. Você precisará definir o que deseja que o aplicativo faça nessa situação.
- As notificações push podem levar um tempo para se tornarem ativas. Se você não vir as notificações chegando, espere alguns minutos antes de solucionar outros problemas.

## Compartilhe seu feedback conosco

Seu feedback nos ajuda a criar uma experiência melhor, então adoraríamos ouvir de você se tiver algum problema durante o processo de integração do SDK. Se você enfrentar alguma dificuldade, não hesite em compartilhar suas opiniões conosco [através deste formulário](https://docs.google.com/forms/d/e/1FAIpQLSd_0b8jwn-V_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).