firebase-cloud-messagingfirebase-cloud-messaging入門


備註

一個臭名昭著的常見問題是“如何從設備發送通知”,遺憾的是答案是:你做不到。需要觸發FCM才能發送推送通知。這可以通過3種不同的方式完成:

  1. 直接在Firebase Web控制台中
  2. 設置Firebase函數偵聽器,然後觸發FCM
  3. 服務器請求FCM發送推送通知

推送通知是從FCM發送的信息有效負載。推送通知有3種類型: notificationdatanotification and data 。此信息可以表示為JSON:

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

以上示例適用於第三種類型, notificationdata組合。這就是要求FCM發送的內容。

  1. 控制台可以發送帶有data notificationnotification ,但不僅僅是data
  2. 功能和任何服務器都可以發送3種類型

notification類型的重要性在於允許應用程序接收默認推送功能,以便通過簡單地使用Web控制台來增強應用程序增長,而無需在向項目添加庫之外進行進一步編碼,從而增強應用程序的增長。

請不要混淆推送通知, notification類型和可視通知,這最後對應於Android類(通常是NotificationCompat)。

推送的行為根據類型和應用程序位於前台或後台而不同。不在前景意味著,最小化或關閉。

  1. 如果應用程序不在前台notification將觸發默認的可視通知,此通知可在清單中自定義,請參閱文檔 。如果應用程序位於前台,我們必須自定義onMessageReceived方法中的行為。
  2. 必須始終自定義data類型行為。
  3. 如果應用程序不在前台,則組合notificationdata將觸發默認視覺通知,並且當用戶單擊時, data有效負載將可用。由於在單擊可視通知時觸發了啟動器Activity,因此您必須逐字地獲取getIntent().getStringExtra("yourKey");在該Activity中獲取數據。如果應用程序處於活動狀態(在前台),則必須自定義onMessageReceived方法內的行為,並立即訪問data有效內容。

要獲取信息有效負載,您必須在onMessageReceived方法中執行此操作,唯一可用的參數是消息:

  1. 要獲得remoteMessage.getNotification()notification ,您可以使用相應的方法獲取正文或標題
  2. 要獲取data ,必須使用remoteMessage.getData().get("yourKey")

添加每個非空驗證是一個好主意,將有幾種類型的通知到達高級應用程序。一個好的策略是驗證每個, notificationdata是否都不為空。隨之而來的有用策略是始終在data通知中使用type鍵以進行一些流控制。

要從Firebase Web控制台發送data ,必須打開高級選項。

notification密鑰是有限的,並在文檔中指出。 任何類型的值都只能是String

如果您在Firebase中找到任何文檔時遇到問題,請轉到頁面底部並將語言更改為“英語”,其他語言的文檔更薄

安裝或設置

Firebase Cloud Messaging是處理推送通知的Firebase服務。您可以在任何客戶端中添加此服務:Web,Android或IOS。必須從文檔中讀取每個的具體功能。

要在任何類型的項目中添加FCM,始終要添加庫

考慮到對Android的特殊支持,值得採取幾行措施。使用Android Studio創建一個新項目,在菜單中轉到Tools / Firebase,它將觸發Firebase助手。選擇“雲消息傳遞”並按照步驟一和步驟二進行操作。

  1. 如果您的項目之前添加了另一個Firebase服務,則第一步將標記為已完成,否則您必須執行此操作。第一步允許您在Firebase中創建項目或創建一個新項目。此步驟將下載google-service.json文件,該文件具有與Firebase項目連接的配置。此文件位於“app”文件夾中。
  2. 此步驟將Google服務庫和Firebase庫添加到gradle中,它也會在這些文件中執行一些額外配置。

這是在項目中添加FCM的基礎。從現在開始,只要應用程序不在前台,客戶端就能夠接收包含“通知”有效負載的FCM推送通知(備註中的更多詳細信息)。

為了進一步自定義我們需要添加2服務客戶端的FCM的行為,這也證明在官方網站。我們將再次考慮Android:

  1. 創建一個擴展FirebaseMessagingService 並覆蓋onMessageReceived方法的類
  2. 創建一個擴展FirebaseInstanceIdService 並覆蓋onTokenRefresh方法的類
  3. 在清單中註冊兩個類,請在application 標記</ intent-filter> </ intent-filter>中執行此操作

您可以使用其中的唯一參數獲取onMessageReceived 方法中的notification 有效負載和data 有效負載。當FCM分配FCM令牌時,將調用onTokenRefresh 方法。 FCM令牌是應用程序安裝和設備的唯一ID,可用作設備的地址以直接發送推送通知。

有關通知類型和相關行為的更多信息,請閱讀備註。