透過 FCM,您可以將兩種類型的訊息傳送至用戶端應用程式:
- 通知訊息與「顯示訊息」類似,FCM SDK 會自動處理。
 - 資料訊息,由用戶端應用程式處理。
 
通知訊息包含一組預先定義且使用者可見的金鑰,並可包含選用的資料酬載。相較之下,資料訊息只包含您定義的自訂鍵/值組合。兩種訊息類型的酬載大小上限皆為 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 鍵。您可以使用下列範例,在即時通訊應用程式中設定通知訊息格式
{
  "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 控制台,傳送含有自訂鍵/值組合選用酬載的通知訊息。在「通知撰寫工具」中,使用「進階選項」中的「自訂資料」欄位。
應用程式收到同時包含通知和資料酬載的訊息時,會根據應用程式處於背景或前景狀態 (也就是收到訊息時是否處於活動狀態),採取不同的行為。
- 在背景執行時,應用程式會在通知匣中收到通知酬載,且只會在使用者輕觸通知時處理資料酬載。
 - 應用程式在前台運作時,會收到包含兩個酬載的訊息物件。
 
以下是包含 notification 鍵和 data 鍵的 JSON 格式訊息:
{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}