Firebase 實(shí)現(xiàn)消息推送

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 云消息傳遞體系結(jié)構(gòu)圖
一個(gè) FCM 實(shí)現(xiàn)包括您的環(huán)境中的一個(gè)應(yīng)用服務(wù)器(通過(guò) HTTP 或 XMPP 協(xié)議與 FCM 交互)和一個(gè)客戶(hù)端應(yīng)用恤左。 此外贴唇, FCM 還包括通知控制臺(tái),您可以使用此控制臺(tái)將通知發(fā)送至客戶(hù)端應(yīng)用飞袋。
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)才能充分利用這些功能羡忘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谎痢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卷雕,更是在濱河造成了極大的恐慌节猿,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漫雕,死亡現(xiàn)場(chǎng)離奇詭異滨嘱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)浸间,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)太雨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人发框,你說(shuō)我怎么就攤上這事躺彬。” “怎么了梅惯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)仿野。 經(jīng)常有香客問(wèn)我铣减,道長(zhǎng),這世上最難降的妖魔是什么脚作? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任葫哗,我火速辦了婚禮缔刹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劣针。我一直安慰自己校镐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布捺典。 她就那樣靜靜地躺著鸟廓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪襟己。 梳的紋絲不亂的頭發(fā)上引谜,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音擎浴,去河邊找鬼员咽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贮预,可吹牛的內(nèi)容都是我干的贝室。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼仿吞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼滑频!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起茫藏,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤误趴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后务傲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體凉当,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年售葡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了看杭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挟伙,死狀恐怖楼雹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尖阔,我是刑警寧澤贮缅,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站介却,受9級(jí)特大地震影響谴供,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜齿坷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一桂肌、第九天 我趴在偏房一處隱蔽的房頂上張望数焊。 院中可真熱鬧,春花似錦崎场、人聲如沸佩耳。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)干厚。三九已至,卻和暖如春饺蚊,著一層夾襖步出監(jiān)牢的瞬間萍诱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工污呼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裕坊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓燕酷,卻偏偏與公主長(zhǎng)得像籍凝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苗缩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理饵蒂,服務(wù)發(fā)現(xiàn),斷路器酱讶,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • FCM退盯,即Firebase Cloud Messaging Firebase,F(xiàn)irebase是一家實(shí)時(shí)后端數(shù)據(jù)庫(kù)...
    阿敏其人閱讀 34,722評(píng)論 4 15
  • 本文已授權(quán)微信公眾號(hào) Android技術(shù)經(jīng)驗(yàn)分享 獨(dú)家發(fā)布轉(zhuǎn)載請(qǐng)注明出處:FCM---Android系統(tǒng)級(jí)推送--...
    hongjay閱讀 77,565評(píng)論 23 53
  • 就從今天開(kāi)始,雖然這已經(jīng)是四天后去回寫(xiě)上週六的日記灶挟,但自己并沒(méi)有因這幾天拖延寫(xiě)日記而責(zé)備自己琉朽。接觸簡(jiǎn)書(shū)已經(jīng)有半年...
    信用公益閱讀 104評(píng)論 0 1