訊息推送支援整合 Firebase 雲資訊傳遞(Firebase Cloud Messaging,簡稱 FCM)通道,以滿足 App 在海外安卓裝置上的使用需求。
下面介紹 FCM 推送通道的接入過程。
前提條件
接入 FCM 前,需要滿足以下幾個條件:
採用原生 AAR 方式接入。FCM 僅支援以原生 AAR 方式接入,不支援 Portal & Bundle 接入。
Gradle 版本大於 4.1。
使用 AndroidX。
com.android.tools.build:gradle
為 3.2.1 或以上版本。compileSdkVersion
為 28 或以上版本。
接入 FCM SDK
操作步驟如下:
在 Firebase 控制台添加應用。
登入 Firebase 控制台,參考 Firebase 文檔 完成應用註冊。
將 Firebase Android 設定檔添加到您的應用。
下載
google-services.json
設定檔,將設定檔放置到專案主 module 目錄下。在根目錄
build.gradle
的buildScript
依賴中加入 Google 服務外掛程式。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 // ... } }
在主 module 工程的
build.gradle
中應用 Google 服務外掛程式。apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
在主 module 工程的
build.gradle
中加入 FCM SDK 依賴。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' }
接入 mPaaS
操作步驟如下:
在主 module 工程的
build.gradle
中加入 FCM Adapter 依賴。dependencies { implementation 'com.mpaas.push:fcm-adapter:0.0.2' }
接入訊息推送組件,mPaaS 基準版本要求如下:
對於
com.mpaas.push:fcm-adapter:0.0.2
, 基準版本不能低於 10.1.68.34。對於
com.mpaas.push:fcm-adapter:0.0.1
, 基準版本不能低於 10.1.68.19。
接收推送訊息。由於 FCM SDK 本身的特性,通過控制台或服務端向 FCM 通道推送的訊息,用戶端並不總是會從 FCM 通道接收到,也可能會從自建通道接收到。具體規則為:
當應用在後台或應用進程被殺死時,訊息會從 FCM 通道收到,直接展示在通知欄,和其他廠商通道一樣。
當應用在前台時,訊息會被 FCM 透傳給應用,應用會從自建通道收到訊息。
(可選)可通過註冊訊息接收器來擷取 FCM 初始化失敗的錯誤資訊,具體參見 錯誤碼說明文檔。 樣本如下:
<receiver android:name=".push.FcmErrorReceiver" android:exported="false"> <intent-filter> <action android:name="action.mpaas.push.error.fcm.init" /> </intent-filter> </receiver>
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(); } } }