Firebase 雲端傳訊

Firebase 雲端通訊 (FCM) 是一項服務,可促進行動應用程式和伺服器應用程式之間的傳訊。 本文提供 FCM 運作方式的概觀,並說明如何設定 Google Services,讓您的應用程式可以使用 FCM。

Firebase Cloud Messaging hero image

本主題提供 Firebase 雲端通訊如何在 Xamarin.Android 應用程式與應用程式伺服器之間路由傳送訊息的高階概觀,並提供取得認證的逐步程式,讓您的應用程式可以使用 FCM 服務。

概觀

Firebase 雲端通訊 (FCM) 是跨平台服務,可處理伺服器應用程式和行動用戶端應用程式之間的訊息傳送、路由和佇列。 FCM 是 Google 雲端通訊 (GCM) 的繼任者,其建置在 Google Play 服務上。

如下圖所示,FCM 會作為訊息傳送者和客戶端之間的媒介。 用戶端應用程式是啟用 FCM 的應用程式,可在裝置上執行。 應用程式伺服器(由您或您的公司提供)是啟用 FCM 的伺服器,可供用戶端應用程式透過 FCM 與其通訊。 不同於 GCM,FCM 可讓您直接透過 Firebase 控制台通知 GUI 將訊息傳送至用戶端應用程式:

FCM sits between the client app and an app server

使用 FCM,應用程式伺服器可以將訊息傳送至單一裝置、一組裝置,或傳送至一些訂閱主題的裝置。 用戶端應用程式可以使用 FCM 訂閱來自應用程式伺服器的下游訊息(例如,接收遠端通知)。 如需不同 Firebase 訊息類型的詳細資訊,請參閱 關於 FCM 訊息

Firebase 雲端傳訊運作

當下游訊息從應用程式伺服器傳送至用戶端應用程式時,應用程式伺服器會將訊息傳送至 Google提供的 FCM 連線伺服器 接著會將訊息轉送至執行用戶端應用程式的裝置。 訊息可以透過 HTTP 或 XMPP 傳送(可延伸傳訊和目前狀態通訊協定)。 由於用戶端應用程式不一定會連線或執行,因此 FCM 連線伺服器會加入佇列並儲存訊息,並在重新連線並可供使用時將它們傳送至用戶端應用程式。 同樣地,如果應用程式伺服器無法使用,FCM 會將來自用戶端應用程式的上游訊息加入應用程式伺服器。 如需 FCM 連線伺服器的詳細資訊,請參閱 關於 Firebase 雲端傳訊伺服器

FCM 會使用下列認證來識別應用程式伺服器和用戶端應用程式,並使用這些認證透過 FCM 授權訊息交易:

  • 寄件人標識碼 – 發件人 標識符 是建立 Firebase 專案時指派的唯一數值。 傳送者標識碼可用來識別可傳送訊息給用戶端應用程式的每個應用程式伺服器。 寄件人標識碼也是您的項目編號;當您註冊專案時,您會從 Firebase 控制台取得發件人識別碼。 寄件者識別碼的範例為 496915549731

  • API 金鑰 – API 金鑰可讓應用程式伺服器存取 Firebase 服務;FCM 會使用此金鑰來驗證應用程式伺服器。 此認證也稱為 伺服器金鑰Web API 金鑰。 API 金鑰的範例為 AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk

  • 應用程式識別碼 – 用戶端應用程式的身分識別(獨立於任何指定的裝置)註冊以接收來自 FCM 的訊息。 應用程式識別碼的範例是 1:415712510732:android:0e1eb7a661af2460

  • 註冊令牌 – 註冊令牌(也稱為實例標識符)是指定裝置上用戶端應用程式的 FCM 身分識別。 註冊令牌會在運行時間產生 – 當應用程式在裝置上執行時第一次向 FCM 註冊時,就會收到註冊令牌。 註冊令牌會授權用戶端應用程式的實例(在該特定裝置上執行)接收來自 FCM 的訊息。 註冊令牌的範例是 fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS (非常長的字串)。

設定 Firebase 雲端傳訊 (本指南稍後) 提供建立專案併產生這些認證的詳細指示。 當您在 Firebase 控制台中建立新專案時,會建立名為 google-services.json 的認證檔案 – 將此檔案新增至您的 Xamarin.Android 專案,如使用 FCM 的遠端通知中所述

下列各節說明用戶端應用程式透過 FCM 與應用程式伺服器通訊時,如何使用這些認證。

向 FCM 註冊

用戶端應用程式必須先向 FCM 註冊,才能進行傳訊。 用戶端應用程式必須完成下圖所示的註冊步驟:

App registration steps diagram

  1. 用戶端應用程式會連絡 FCM 以取得註冊令牌,並將寄件人標識碼、API 金鑰和應用程式識別碼傳遞至 FCM。

  2. FCM 會將註冊令牌傳回用戶端應用程式。

  3. 用戶端應用程式 (選擇性地) 會將註冊令牌轉送至應用程式伺服器。

應用程式伺服器會快取註冊令牌,以便與用戶端應用程式進行後續通訊。 應用程式伺服器可以將通知傳回用戶端應用程式,以指出已收到註冊令牌。 在進行此交握之後,用戶端應用程式可以接收來自應用程式伺服器(或傳送訊息至)的訊息。 如果舊令牌遭到入侵,用戶端應用程式可能會收到新的註冊令牌(如需應用程式如何接收註冊令牌更新的範例,請參閱 FCM 的遠端通知)。

當用戶端應用程式不再想要從應用程式伺服器接收訊息時,可以將要求傳送至應用程式伺服器以刪除註冊令牌。 如果用戶端應用程式從裝置卸載,FCM 會偵測到此情況,並自動通知應用程式伺服器刪除註冊令牌。

下游傳訊

下圖說明 Firebase 雲端傳訊如何儲存和轉送下游訊息:

FCM uses store and forward for downstream messaging

當應用程式伺服器將下游訊息傳送至用戶端應用程式時,它會使用下列步驟,如上圖所示:

  1. 應用程式伺服器會將訊息傳送至 FCM。

  2. 如果客戶端裝置無法使用,FCM 伺服器會將訊息儲存在佇列中,以供日後傳輸。 訊息會保留在 FCM 記憶體中最多 4 周(如需詳細資訊,請參閱 設定訊息的存留期)。

  3. 當用戶端裝置可用時,FCM 會將訊息轉送至該裝置上的用戶端應用程式。

  4. 用戶端應用程式會從 FCM 接收訊息、處理訊息,並將其顯示給使用者。 例如,如果訊息是遠端通知,則會在通知區域中向用戶呈現。

在此傳訊案例中(應用程式伺服器將訊息傳送至單一用戶端應用程式),訊息長度最多可達 4kB。

如需在 Android 上接收下游 FCM 訊息的詳細資訊,請參閱 使用 FCM 的遠端通知。

主題傳訊

主題傳訊 可讓應用程式伺服器將訊息傳送至已選擇加入特定主題的多個裝置。 您也可以透過 Firebase 控制台通知 GUI 撰寫和傳送主題訊息。 FCM 會處理主題訊息至已訂閱用戶端的路由和傳遞。 此功能可用於天氣警示、股票報價和頭條新聞等訊息。

Topic messaging diagram

在主題傳訊中使用下列步驟(在用戶端應用程式取得註冊令牌之後,如先前所述):

  1. 用戶端應用程式會藉由將訂閱訊息傳送至 FCM 來訂閱主題。

  2. 應用程式伺服器會將主題訊息傳送至 FCM 以進行散發。

  3. FCM 會將主題訊息轉送給已訂閱該主題的用戶端。

如需 Firebase 主題傳訊的詳細資訊,請參閱 Google 在 Android 上的主題傳訊。

設定 Firebase 雲端通訊

您必須先透過 Firebase 控制台建立新專案(或匯入現有專案),才能在應用程式中使用 FCM 服務。 使用下列步驟為您的應用程式建立 Firebase 雲端傳訊專案:

  1. 使用 Google 帳戶登入 Firebase 控制台 (也就是您的 Gmail 位址),然後按兩下 [ 建立新專案]:

    Create New Project button

    如果您有現有的專案,請按兩下 [ 匯入 Google 專案]。

  2. 在 [ 建立專案 ] 對話框中,輸入專案的名稱,然後按兩下 [ 建立專案]。 在下列範例中,會建立名為 XamarinFCM 的新專案:

    Create a Project dialog

  3. 在 Firebase 控制台概觀,按兩下 [將 Firebase 新增至 Android 應用程式]:

    Add Firebase to your Android app

  4. 在下一個畫面中,輸入應用程式的套件名稱。 在此範例中,套件名稱為 com.xamarin.fcmexample。 此值必須符合Android應用程式的套件名稱。 您也可以在 [應用程式昵稱] 字段中輸入應用程式昵稱

    Entering FCM Example as the app nickname

  5. 如果您的應用程式使用動態連結、邀請或 Google 驗證,您也必須輸入偵錯簽署憑證。 如需尋找簽署憑證的詳細資訊,請參閱 尋找密鑰存放區的 MD5 或 SHA1 簽章。 在此範例中,簽署憑證會保留空白。

  6. 按兩下 [ 新增應用程式]:

    Clicking the Add App button

    系統會自動為應用程式產生伺服器 API 金鑰和用戶端識別碼。 此資訊會封裝在按兩下 [新增應用程式] 時自動下載的google-services.json檔案中。 請務必將此檔案儲存在安全的地方。

如需如何將google-services.json新增至應用程式專案以在 Android 上接收 FCM 推播通知訊息的詳細範例,請參閱使用 FCM 的遠端通知。

進階閱讀

摘要

本文提供 Firebase 雲端傳訊 (FCM) 的概觀。 它說明用來識別和授權應用程式伺服器與用戶端應用程式之間傳訊的各種認證。 它說明註冊和下游傳訊案例,並詳細說明向 FCM 註冊應用程式以使用 FCM 服務的步驟。