透過 FCM,您可以傳送兩種類型的訊息至用戶端應用程式:
- 通知訊息與「顯示訊息」類似,由 FCM SDK 自動處理。(在 Android 上使用
AndroidConfigV2時,請針對所有顯示使用者可見通知的訊息使用RemoteNotification,以便在不刻意延遲的情況下傳送訊息;無論應用程式是在前景或背景,通知都會自動顯示,除非在用戶端程式碼中明確設為靜音)。 - 資料訊息,由用戶端應用程式處理。
通知訊息包含一組預先定義的使用者可見鍵,並可包含選用的資料酬載。相較之下,資料訊息只包含使用者定義的自訂鍵/值組合。這兩種訊息類型的酬載上限均為 4096 個位元組,但從 Firebase 控制台傳送訊息時,則有 1000 個字元限制。
| 使用情境 | 如何傳送 | |
|---|---|---|
| 通知訊息 | 當用戶端應用程式在背景執行時,FCM SDK 會代表該應用程式,在使用者裝置上顯示訊息。否則,如果應用程式在收到通知時於前景執行,則由應用程式的程式碼決定行為。 |
|
| 資料訊息 | 用戶端應用程式負責處理資料訊息。資料訊息只有自訂鍵/值組合,沒有保留鍵名稱 (請見下方)。 | 在
Cloud Functions 或應用程式伺服器等受信任的環境中,使用 Firebase Admin SDK 或 HTTP v1 API。在傳送要求中,設定 data 鍵。 |
如果想讓 FCM SDK 在應用程式於背景執行時,自動顯示通知,可以使用通知訊息。FCM 可傳送通知訊息,並視需要附加資料酬載。在這種情況下,FCM 會顯示通知酬載,而用戶端應用程式會處理資料酬載。
如要使用自己的用戶端應用程式程式碼處理訊息,可以使用資料訊息。
通知訊息
您可以使用 Firebase 控制台、 Firebase Admin SDK 或 FCM HTTP v1 API 傳送通知訊息。Firebase 控制台提供以數據分析為基礎的 A/B 測試,協助您調整及改善通知訊息。
如要使用 Firebase Admin SDK 或 FCM HTTP v1 API 傳送通知訊息,請使用通知訊息的預先定義鍵/值選項組合,設定 notification 鍵。您可以參考以下範例,在 IM 應用程式中設定通知訊息格式
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
如果應用程式在背景執行,通知訊息會傳送至通知匣。如果是前景應用程式,訊息會由回呼函式處理。
如需建構通知訊息時可用的預先定義索引鍵完整清單,請參閱 FCM HTTP v1 API 通知物件參考文件。
資料訊息
您可以自行決定如何使用 FCM 酬載 data 實作所選的加密配置。請勿在自訂鍵/值組合中使用任何保留字。保留字包括 from、message_type,或任何開頭為 google.、gcm. 或 gcm.notification. 的字詞。
以下範例說明頂層或一般資料欄位的用法,所有接收訊息的平台用戶端都會解讀這個欄位。在每個平台上,用戶端應用程式都會在回呼函式中接收資料酬載
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
含有選用資料酬載的通知訊息
您可以透過程式輔助方式或使用 Firebase 控制台,傳送含有自訂鍵/值組合選用酬載的通知訊息。在通知編輯器中,使用「進階選項」中的「自訂資料」欄位。
應用程式收到同時包含通知和資料酬載的訊息時,行為取決於應用程式是在背景還是前景,基本上就是收到訊息時是否處於活動狀態。
- 在背景執行時,應用程式會在通知匣中收到通知酬載,且只有在使用者輕觸通知時,才會處理資料酬載。
- 在前景執行時,應用程式會收到包含兩種酬載的訊息物件。
以下是 JSON 格式的訊息,同時包含 notification 鍵和 data 鍵:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}