O Message Push Service oferece suporte ao canal Firebase Cloud Messaging (FCM) para aplicativos Android em dispositivos fora da China.
Este tópico descreve como integrar o canal de push FCM a um aplicativo Android baseado no mPaaS.
O FCM suporta apenas o método de integração AAR nativo. A integração Portal & Bundle não é compatível. Confirme se o projeto atende a todos os pré-requisitos antes de começar.
Pré-requisitos
Antes de iniciar, verifique se você tem:
Integração AAR nativa (o FCM não suporta integração Portal & Bundle)
Gradle 4.1 ou posterior
AndroidX ativado no projeto
com.android.tools.build:gradle3.2.1 ou posteriorcompileSdkVersion28 ou posterior
Integrar o SDK do FCM
-
Registre o aplicativo no console do Firebase.
Faça login no console do Firebase e registre o aplicativo. Consulte a documentação do Firebase para obter detalhes.
-
Adicione o arquivo de configuração do Firebase ao aplicativo.
Baixe o arquivo de configuração
google-services.jsone coloque-o no diretório do módulo app do projeto. -
Adicione o plugin Google Services às dependências do
buildScriptno arquivobuild.gradledo nível raiz.// FILE: build.gradle (root-level) // PURPOSE: Add Google Services plugin and Maven repository buildscript { repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository } dependencies { // ... // Add the following line: classpath 'com.google.gms:google-services:4.3.4' // Google Services plugin } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } } -
Aplique o plugin Google Services no arquivo
build.gradledo módulo app.// FILE: build.gradle (app-level) // PURPOSE: Enable Google Services plugin for this module apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... } -
Adicione a dependência do SDK do FCM no arquivo
build.gradledo módulo app.// FILE: build.gradle (app-level) // PURPOSE: Add FCM SDK and Analytics dependencies via Firebase BoM dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.1.1') // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.firebase:firebase-analytics' }
Integrar o mPaaS
-
Adicione a dependência do FCM Adapter no arquivo
build.gradledo módulo app.// FILE: build.gradle (app-level) // PURPOSE: Add mPaaS FCM Adapter to bridge FCM with Message Push Service dependencies { implementation 'com.mpaas.push:fcm-adapter:0.0.2' } -
Integre o componente MPS. A versão baseline do mPaaS necessária depende da versão do adaptador:
com.mpaas.push:fcm-adapter:0.0.2: versão baseline 10.1.68.34 ou posteriorcom.mpaas.push:fcm-adapter:0.0.1: versão baseline 10.1.68.19 ou posterior
-
Entenda o comportamento de entrega de mensagens.
O SDK do FCM entrega mensagens por canais diferentes conforme o estado do aplicativo:
Estado do aplicativo
Canal de entrega
Comportamento de exibição
Segundo plano ou processo encerrado
Canal FCM
Exibido na barra de notificações, assim como em outros canais de fornecedores
Primeiro plano
Canal próprio
O FCM passa a mensagem para o aplicativo, que a recebe pelo canal próprio
Se o aplicativo estiver em segundo plano ou com o processo encerrado, as mensagens serão entregues pelo canal FCM e exibidas na barra de notificações.
Caso o aplicativo esteja em primeiro plano, o FCM repassa as mensagens ao aplicativo, que as recebe pelo canal próprio.
-
(Opcional) Registre um receptor de erros para tratar falhas na inicialização do FCM.
Se a inicialização do FCM falhar, um broadcast com a ação
action.mpaas.push.error.fcm.initserá enviado. Registre umBroadcastReceiverpara capturá-lo e obter o código de erro. Para a lista completa de códigos de erro, consulte a documentação de códigos de erro ConnectionResult.-
Declare o receptor no
AndroidManifest.xml:// FILE: AndroidManifest.xml // PURPOSE: Register FCM error broadcast receiver <receiver android:name=".push.FcmErrorReceiver" android:exported="false"> <intent-filter> <action android:name="action.mpaas.push.error.fcm.init" /> </intent-filter> </receiver> -
Implemente a classe do receptor:
// FILE: FcmErrorReceiver.java // PURPOSE: Receive and handle FCM initialization error broadcasts package com.mpaas.demo.push; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class FcmErrorReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if ("action.mpaas.push.error.fcm.init".equalsIgnoreCase(action)) { Toast.makeText(context, "fcm error " + intent.getIntExtra("error", 0), Toast.LENGTH_SHORT).show(); } } }
-