Configuração do Firebase Cloud Messaging e envio de notificações push móveis no Connectif

Para o envio e recebimento de notificações push móveis por meio do Mobile SDK para Android, você precisará configurar o Firebase Cloud Messaging. Este artigo explica os passos necessários para realizar a configuração.

 

1. Criar e configurar o projeto no Firebase

1.1. Criar e configurar um projeto no Firebase

O primeiro passo será ter um projeto configurado no console do Firebase; caso não tenha, você pode seguir o guia do Google para a criação e configuração inicial do Firebase no Android.

Uma vez concluído esse passo, você terá obtido o arquivo google-services.json e terá o Google Play Service no nível do projeto e do app, além da dependência do Firebase no nível do app (dentro dos seus arquivos Build.gradle).

 

1.2. Configuração do FirebaseMessagingService

Dentro do seu projeto Android, será necessário implementar o serviço FirebaseMessagingService, que permitirá receber notificações por meio do onMessageReceived e registrar alterações no token push com o onNewToken.

 

a. Recebimento de notificações em onMessageReceived

No método onMessageReceived receberemos as notificações geradas a partir dos nossos Workflows no Connectif; para manipular esses pushs, usaremos Connectif.handlePushNotification, que retornará um booleano indicando se o push foi tratado pelo Connectif, como mostrado na implementação, onde o utilizamos para lidar com todos os pushs que não são provenientes do Connectif.

override fun onMessageReceived(remoteMessage: RemoteMessage) {
    if (!Connectif.handlePushNotification(
            remoteMessage.data,
            applicationContext
        )
    ) {
        // Outros provedores de push
    }
}

Se desejar identificar se o push vem do Connectif e não quiser tratá-lo naquele momento, poderá usar Connectif.isConnectifPushNotification.

 

b. Registrar alterações no token push

Na primeira vez que o app iniciar, ele gera um novo token, que poderá ser registrado através do serviço com onNewToken.

override fun onNewToken(token: String) {
    Connectif.addPushToken(token)
}

 

Nota importante sobre permissões: Ao chamar o método Connectif.addPushToken(token), o SDK do Connectif enviará automaticamente, junto com o novo token, o estado atual das permissões de notificações push do usuário no dispositivo. Isso garante que o Connectif tenha sempre informações atualizadas sobre a capacidade do usuário de receber notificações em tempo real.

 

Este token poderá mudar nos seguintes casos: 

  • O app é restaurado em um dispositivo novo.
  • O usuário desinstala e reinstala o app.
  • O usuário apaga os dados do app.

Este será o aspecto da nossa implementação do FirebaseMessagingService.

class MyFirebaseMessagingService : FirebaseMessagingService() {
    private val notificationManager by lazy {
        getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    }

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        if (!Connectif.handlePushNotification(
                remoteMessage.data,
                notificationManager,
                applicationContext
            )
        ) {
            // Outros provedores de push
        }
    }

    override fun onNewToken(token: String) {
        Connectif.addPushToken(token)
    }
}

Deve-se levar em conta que, se não for a primeira inicialização do app, o onNewToken não será executado, por isso é interessante obter o token push atual da instância do Firebase e enviá-lo para o Connectif. Os locais apropriados para isso são durante o onCreate no objeto Application ou na Activity principal.

class SampleApp : Application() {

    override fun onCreate() {
        super.onCreate()
            FirebaseMessaging.getInstance().token.addOnSuccessListener {
            Connectif.addPushToken(it, applicationContext)
        }
    }
}

 

c. Adicionar FirebaseMessagingService ao arquivo AndroidManifest

Para usar o serviço de mensagens, devemos adicioná-lo ao arquivo AndroidManifest.

<service
    android:name=".mypackages.MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

 

2. Configurar Android na Integração App Móvel do Connectif

Para realizar o envio de push pelo Connectif, precisaremos que você nos forneça a chave privada (arquivo JSON) da Conta de Serviço para o Google Cloud. Os passos para criação são os seguintes.

Na Console do Firebase, acessaremos nosso projeto, dentro de "Configuração do projeto" entraremos em "Contas de Serviço".

console.firebase.google.com_u_3_project_sdk-test-app-51cdb_settings_serviceaccounts_adminsdk.png

 

Mantendo o check em Node.js, clique em "Gerar nova chave privada". Esta ação irá gerar um arquivo JSON que precisaremos mais adiante.

No Connectif, iremos para a configuração da nossa loja, na seção do canal App Móvel. Encontraremos uma seção Android que permitirá enviar o arquivo baixado do Firebase.

 

localhost_3002_store_64886d8852c77f00f7b2379e_store-edit_tabId=mobileApp.png

 

E este será o aspecto da nossa integração quando tivermos enviado o arquivo corretamente.

 

localhost_3002_store_64886d8852c77f00f7b2379e_store-edit_tabId=mobileApp (1).png

 

Uma vez realizados esses passos, teremos a integração do Firebase Cloud Messaging pronta para enviar pushs a partir dos nossos workflows.

 

3. Configuração adicional

Lembre-se que ao iniciar o SDK poderá definir alguns valores usando o parâmetro ConnectifConfig em Connectif.initialize().

 

3.1. Ícone 

Por padrão, teremos um ícone atribuído às nossas notificações push:

ic_default_notification default_push_icon.png 

Se desejar, poderá personalizá-lo indicando o recurso na propriedade pushSmallIcon de ConnectifConfig ao iniciar o SDK; lembre-se que para que seja exibido corretamente deve conter apenas cor branca e transparências.

 

3.2. Canal de notificações

A partir do Android 8 é obrigatório criar um canal para mostrar as notificações; por padrão, atribuímos às notificações exibidas pelo Connectif o nome do canal "Default Channel" e "connectif_channel" como identificador do canal.

Você poderá nos informar seu nome e canal personalizado usando as propriedades pushChannelName e pushChannelId de ConnectifConfig ao iniciar o SDK.

 

3.3. Atualização do estado das permissões de notificações

Se precisar forçar a atualização do estado das permissões de notificações push do usuário (por exemplo, se o usuário modificou as permissões nas configurações do sistema Android e você deseja refletir essa mudança imediatamente no Connectif), pode usar o método updatePushPermissionStatus().

Este método permite enviar para o SDK o estado atual das permissões de notificação do dispositivo a qualquer momento.

Connectif.updatePushPermissionStatus()
 

Parabéns!
Você chegou ao final da lição.

  

Ficou com dúvidas?
Lembre-se que você tem à disposição nossos especialistas em Connectif. Para contatá-los, basta abrir um ticket para o Suporte clicando no botão azul “Ajuda” do seu dashboard.


Continue aprendendo!

Para aproveitar todo o potencial da sua conta no Connectif, recomendamos continuar com os seguintes artigos: