Firebase Cloud Messaging
Firebase Cloud Messaging (FCM) 是一種跨平臺消息傳遞解決方案,您可以使用它免費且可靠地傳遞消息和通知。
使用 FCM,您可以通知客戶端應用存在可以同步的新電子郵件或其他數據。 您可以發送通知來重新吸引用戶和促進用戶留存。 對于即時通訊等用例,一條消息可以將最大 4KB 的負載傳送至客戶端應用。
已在使用 Google 云消息傳遞?請詳細了解您的選項。
主要功能
通用消息定位
以三種方式中的任一種將消息分發至您的客戶端應用 — 分發至單一設備、設備群組或訂閱主題的設備。
數據消息和通知支持
傳遞不超過 2KB 的通知,不超過 4KB 的數據負載,以及發送帶通知和數據負載的消息。
從客戶端應用使用上游消息傳遞
通過 FCM 可靠而省電的連接通道,將確認消息、聊天信息及其他消息從設備發回至您的服務器。
如何工作?
Firebase Notifications 基于 Firebase Cloud Messaging 構建并為客戶端開發使用相同的 FCM SDK。 要測試或通過強大的內置定向與 Analytics 發送營銷或互動消息,您可以使用 Notifications。 對于具有更復雜消息傳遞要求的部署, FCM 是正確選擇。
設置 Firebase Cloud Messaging
要編寫您的 Firebase Cloud Messaging Android 客戶端應用,請使用 FirebaseMessaging
API 和 Android Studio 1.4 或更高版本及 Gradle。本頁面中的說明假設您已完成將 Firebase 添加到您的 Android 項目的步驟。
FCM客戶端需要運行 Android 2.3 或更高版本的設備,且這些設備安裝了 Google Play 商店應用,或者需要運行 Android 2.3 及 Google API 的模擬器。請注意,您并非只能通過 Google Play 商店部署您的 Android 應用。
設置 Firebase 和FCM SDK
如果尚未添加,請將 Firebase 添加至您的 Android 項目。
在 Android Studio 中,將 FCM 依賴項添加至您的應用級 build.gradle 文件:
dependencies { compile 'com.google.firebase:firebase-messaging:9.6.1'}
編輯您的應用清單
將以下內容添加至您應用的清單中:
一項可以擴展 FirebaseMessagingService
的服務。如果您希望在后臺進行接收應用通知之外的任何消息處理,則必須添加此服務。要在前臺應用中接收通知、接收數據負載以及發送上游消息等,您必須擴展此服務。
一項可以擴展 FirebaseInstanceIdService
的服務,用于處理注冊令牌的創建、輪轉和更新。如果要發送至特定設備或者創建設備群組,則必須添加此服務。
如果FCM對于 Android 應用的功能至關重要,應確保在清單中設置 android:minSdkVersion="8"
或更高版本。這可確保 Android 應用無法安裝在其不能正常運行的環境中。
例如:
檢查 Google Play 服務 APK
依靠 Play 服務 SDK 運行的應用在訪問 Google Play 服務功能之前,應始終檢查設備是否擁有兼容的 Google Play 服務 APK。建議在以下兩個地方進行檢查:在主 Activity 的 onCreate()
方法中,以及在其 onResume()
方法中。在 onCreate()
中檢查可確保該應用在檢查未成功之前無法使用。在 onResume()
中檢查可確保如果用戶通過某些其他方式返回正在運行的應用(比如通過返回按鈕),檢查仍將繼續進行。如果設備沒有兼容的 Google Play 服務 APK,您的應用可以調用 GooglePlayServicesUtil.getErrorDialog()
以允許用戶從 Google Play 商店下載此 APK,或在設備的系統設置中啟用它。有關代碼示例,請參閱設置 Google Play 服務。
獲取設備注冊令牌
初次啟動您的應用時,FCM SDK 會為客戶端應用實例生成注冊令牌。如果您希望針對單一設備,或者創建設備群組,您將需要獲取此令牌。
您可以通過擴展 FirebaseInstanceIdService
來獲取令牌的值。確保已將服務添加至您的清單中,然后在 onTokenRefresh
上下文中調用 getToken
,并記錄下面顯示的值:
每次生成新的令牌時,onTokenRefresh
回調都會觸發,因此,在上下文中調用 getToken
可以確保您訪問當前可用的注冊令牌。如果尚未生成令牌,FirebaseInstanceID.getToken()
將返回 null。
獲取令牌后,您可以將其發送至您的應用服務器。有關 API 的完整詳情,請參閱 Instance ID API 參考。
后續步驟
設置客戶端應用后,即可開始使用 Firebase 控制臺發送下游消息和使用 Firebase 控制臺發送主題消息。快速入門示例演示了此功能,您可以下載、運行和查看快速入門示例。
要向您的應用添加其他更高級的行為,您可以聲明 Intent 過濾器和實現 Activity 來響應傳入消息。如需了解詳情,請參閱從應用服務器發送消息的指南:
發送下游消息
發送主題消息
發送消息至設備群組
發送上游消息
請記住,您需要一個服務器實現才能充分利用這些功能。