Firebase Cloud Messaging
Firebase Cloud Messaging (FCM) 是一種跨平臺(tái)消息傳遞解決方案叠骑,您可以使用它免費(fèi)且可靠地傳遞消息和通知掐暮。
使用 FCM斟冕,您可以通知客戶(hù)端應(yīng)用存在可以同步的新電子郵件或其他數(shù)據(jù)菊卷。 您可以發(fā)送通知來(lái)重新吸引用戶(hù)和促進(jìn)用戶(hù)留存娩鹉。 對(duì)于即時(shí)通訊等用例,一條消息可以將最大 4KB 的負(fù)載傳送至客戶(hù)端應(yīng)用惕耕。
已在使用 Google 云消息傳遞簿盅?請(qǐng)詳細(xì)了解您的選項(xiàng)站蝠。
主要功能
通用消息定位
以三種方式中的任一種將消息分發(fā)至您的客戶(hù)端應(yīng)用 — 分發(fā)至單一設(shè)備诅病、設(shè)備群組或訂閱主題的設(shè)備哪亿。
數(shù)據(jù)消息和通知支持
傳遞不超過(guò) 2KB 的通知,不超過(guò) 4KB 的數(shù)據(jù)負(fù)載贤笆,以及發(fā)送帶通知和數(shù)據(jù)負(fù)載的消息蝇棉。
從客戶(hù)端應(yīng)用使用上游消息傳遞
通過(guò) FCM 可靠而省電的連接通道,將確認(rèn)消息芥永、聊天信息及其他消息從設(shè)備發(fā)回至您的服務(wù)器篡殷。
如何工作?
Firebase Notifications 基于 Firebase Cloud Messaging 構(gòu)建并為客戶(hù)端開(kāi)發(fā)使用相同的 FCM SDK。 要測(cè)試或通過(guò)強(qiáng)大的內(nèi)置定向與 Analytics 發(fā)送營(yíng)銷(xiāo)或互動(dòng)消息链患,您可以使用 Notifications巧鸭。 對(duì)于具有更復(fù)雜消息傳遞要求的部署, FCM 是正確選擇麻捻。
設(shè)置 Firebase Cloud Messaging
要編寫(xiě)您的 Firebase Cloud Messaging Android 客戶(hù)端應(yīng)用纲仍,請(qǐng)使用 FirebaseMessaging
API 和 Android Studio 1.4 或更高版本及 Gradle。本頁(yè)面中的說(shuō)明假設(shè)您已完成將 Firebase 添加到您的 Android 項(xiàng)目的步驟贸毕。
FCM客戶(hù)端需要運(yùn)行 Android 2.3 或更高版本的設(shè)備郑叠,且這些設(shè)備安裝了 Google Play 商店應(yīng)用,或者需要運(yùn)行 Android 2.3 及 Google API 的模擬器明棍。請(qǐng)注意乡革,您并非只能通過(guò) Google Play 商店部署您的 Android 應(yīng)用。
設(shè)置 Firebase 和FCM SDK
如果尚未添加,請(qǐng)將 Firebase 添加至您的 Android 項(xiàng)目沸版。
在 Android Studio 中嘁傀,將 FCM 依賴(lài)項(xiàng)添加至您的應(yīng)用級(jí) build.gradle 文件:
dependencies { compile 'com.google.firebase:firebase-messaging:9.6.1'}
編輯您的應(yīng)用清單
將以下內(nèi)容添加至您應(yīng)用的清單中:
一項(xiàng)可以擴(kuò)展 FirebaseMessagingService
的服務(wù)。如果您希望在后臺(tái)進(jìn)行接收應(yīng)用通知之外的任何消息處理视粮,則必須添加此服務(wù)细办。要在前臺(tái)應(yīng)用中接收通知、接收數(shù)據(jù)負(fù)載以及發(fā)送上游消息等蕾殴,您必須擴(kuò)展此服務(wù)笑撞。
一項(xiàng)可以擴(kuò)展 FirebaseInstanceIdService
的服務(wù),用于處理注冊(cè)令牌的創(chuàng)建钓觉、輪轉(zhuǎn)和更新娃殖。如果要發(fā)送至特定設(shè)備或者創(chuàng)建設(shè)備群組,則必須添加此服務(wù)议谷。
如果FCM對(duì)于 Android 應(yīng)用的功能至關(guān)重要炉爆,應(yīng)確保在清單中設(shè)置 android:minSdkVersion="8"
或更高版本。這可確保 Android 應(yīng)用無(wú)法安裝在其不能正常運(yùn)行的環(huán)境中卧晓。
例如:
檢查 Google Play 服務(wù) APK
依靠 Play 服務(wù) SDK 運(yùn)行的應(yīng)用在訪問(wèn) Google Play 服務(wù)功能之前芬首,應(yīng)始終檢查設(shè)備是否擁有兼容的 Google Play 服務(wù) APK。建議在以下兩個(gè)地方進(jìn)行檢查:在主 Activity 的 onCreate()
方法中逼裆,以及在其 onResume()
方法中郁稍。在 onCreate()
中檢查可確保該應(yīng)用在檢查未成功之前無(wú)法使用。在 onResume()
中檢查可確保如果用戶(hù)通過(guò)某些其他方式返回正在運(yùn)行的應(yīng)用(比如通過(guò)返回按鈕)胜宇,檢查仍將繼續(xù)進(jìn)行耀怜。如果設(shè)備沒(méi)有兼容的 Google Play 服務(wù) APK,您的應(yīng)用可以調(diào)用 GooglePlayServicesUtil.getErrorDialog()
以允許用戶(hù)從 Google Play 商店下載此 APK桐愉,或在設(shè)備的系統(tǒng)設(shè)置中啟用它财破。有關(guān)代碼示例,請(qǐng)參閱設(shè)置 Google Play 服務(wù)从诲。
獲取設(shè)備注冊(cè)令牌
初次啟動(dòng)您的應(yīng)用時(shí)左痢,F(xiàn)CM SDK 會(huì)為客戶(hù)端應(yīng)用實(shí)例生成注冊(cè)令牌。如果您希望針對(duì)單一設(shè)備系洛,或者創(chuàng)建設(shè)備群組俊性,您將需要獲取此令牌。
您可以通過(guò)擴(kuò)展 FirebaseInstanceIdService
來(lái)獲取令牌的值描扯。確保已將服務(wù)添加至您的清單中定页,然后在 onTokenRefresh
上下文中調(diào)用 getToken
,并記錄下面顯示的值:
每次生成新的令牌時(shí)绽诚,onTokenRefresh
回調(diào)都會(huì)觸發(fā)典徊,因此杭煎,在上下文中調(diào)用 getToken
可以確保您訪問(wèn)當(dāng)前可用的注冊(cè)令牌。如果尚未生成令牌宫峦,F(xiàn)irebaseInstanceID.getToken()
將返回 null岔帽。
獲取令牌后,您可以將其發(fā)送至您的應(yīng)用服務(wù)器导绷。有關(guān) API 的完整詳情犀勒,請(qǐng)參閱 Instance ID API 參考。
后續(xù)步驟
設(shè)置客戶(hù)端應(yīng)用后妥曲,即可開(kāi)始使用 Firebase 控制臺(tái)發(fā)送下游消息和使用 Firebase 控制臺(tái)發(fā)送主題消息贾费。快速入門(mén)示例演示了此功能,您可以下載檐盟、運(yùn)行和查看快速入門(mén)示例褂萧。
要向您的應(yīng)用添加其他更高級(jí)的行為,您可以聲明 Intent 過(guò)濾器和實(shí)現(xiàn) Activity 來(lái)響應(yīng)傳入消息葵萎。如需了解詳情导犹,請(qǐng)參閱從應(yīng)用服務(wù)器發(fā)送消息的指南:
發(fā)送下游消息
發(fā)送主題消息
發(fā)送消息至設(shè)備群組
發(fā)送上游消息
請(qǐng)記住,您需要一個(gè)服務(wù)器實(shí)現(xiàn)才能充分利用這些功能羡忘。