firebase-cloud-messaging 入門
一個臭名昭著的常見問題是如何從裝置傳送通知,遺憾的是答案是:你做不到。需要觸發 FCM 才能傳送推送通知。這可以通過 3 種不同的方式完成:
- 直接在 Firebase Web 控制檯中
- 設定 Firebase 函式偵聽器,然後觸發 FCM
- 伺服器請求 FCM 傳送推送通知
推送通知是從 FCM 傳送的資訊有效負載。推送通知有 3 種型別:notification
,data
,notification and data
。此資訊可以表示為 JSON:
{
"to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
"notification" : {
"body" : "great match!",
"title" : "Portugal vs. Denmark",
"icon" : "myicon"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
上面的例子是第三種型別,notification
和 data
的組合。這就是要求 FCM 傳送的內容。
- 控制檯可以傳送
notification
和notification
與data
但不僅僅是data
- 功能和任何伺服器都可以傳送 3 種型別
notification
型別的重要性在於,允許應用程式接收預設*推送功能,*使其他團隊(如市場營銷)能夠通過簡單地使用 Web 控制檯來增加應用程式增長,而無需在將庫新增到專案之後進行進一步編碼。
請不要混淆推送通知,notification
型別和視覺通知,這最後對應一個 Android 類(通常是 NotificationCompat)。
推送的行為根據型別和應用程式位於前臺或後臺而不同。不在前景意味著,最小化或關閉。
- 如果應用程式不在前臺,
notification
將觸發預設的可視通知,此通知可在清單中自定義,請參閱文件 。如果應用程式位於前臺,我們必須自定義onMessageReceived
方法中的行為。 - 必須始終定製
data
型別的行為。 - 如果應用程式**不在前臺,**則組合
notification
和data
將觸發預設視覺通知,並且當使用者單擊時,data
有效負載將可用。由於在單擊視覺通知時觸發了啟動器活動,因此你必須在該活動中逐字地獲取資料。如果應用程式處於活動狀態(在前臺),則必須自定義onMessageReceived
方法內的行為,並立即訪問data
有效負載。
要獲取資訊有效負載,你必須在 onMessageReceived
方法中執行此操作,唯一可用的引數是訊息:
- 要獲得
notification
,你必須使用相應的方法獲得身體或頭銜 - 要獲得
data
,你必須得到remoteMessage.getData().get("yourKey")
。
新增每個非空驗證是一個好主意,將有幾種型別的通知到達高階應用程式。一個好的策略是驗證 notification
和 data
是否都不為空。隨之而來的有用策略是在 data
通知中始終使用 type
鍵來進行一些流程控制。
要從 Firebase Web 控制檯傳送 data
,必須開啟高階選項。
notification
鍵是有限的,並在文件中指出。任何型別的值都只能是 String 。
如果你在 Firebase 中找到任何文件時遇到問題,請轉到頁面底部並將語言更改為英語,其他語言的文件更薄。