Featured image of post 如何發送 Firebase Cloud Messaging(FCM) 測試推播

如何發送 Firebase Cloud Messaging(FCM) 測試推播

開發 iOS App 經常使用推播功能,為了省下與 APNs 串接的步驟,通常會使用到 Firebase Cloud Messaging 的功能。 為了測試推播功能在 App 端是否正常運作,這邊本文記錄利用 Google Playground 模擬 Backend 對 Firebase API 發送推播請求的過程。

HTTP v1 API

利用 Google 的 OAuth 2.0 Playground 發送推播測試

https://developers.google.com/oauthplayground

STEP 1:選擇 Authorize 的 Scope

step1

  • Firebase Cloud Messaging API v1
    • https://www.googleapis.com/auth/firebase.messaging

按下 Authorize APIs 會導向至 Google 帳戶登入畫面,選擇可以存取 Firebase 專案的 Google 帳號

step1-1

STEP 2:取得 Access Token

step2

  • 利用 STEP 1 取得的 Authorization Code 交換一組 Access Token 與 Refresh Token
  • 可以勾選 Auto-Refresh ,會自動在 Access Token 過期時,利用 Refresh Token 取得一組新的 Access Token

STEP 3:發送 Messaging API

Playground 會在 Headers 自動帶入 AccessToken,無需額外添加,只需要設定好 Request Body,與 URL 的 Proejct ID

step3

  • HTTP METHOD : POST
  • URL : https://fcm.googleapis.com/v1/projects/YOUR-FIREBASE-PROJECT-ID/messages:send
  • REQUEST BODY :
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  "message": {
    "token": "Firebase_Token",

    "notification": {
      "title": "Breaking News",
      "body": "New news story available."
    },
    "data": {
      "story_id": "story_12345"
    },
    "android": {
      "notification": {
        "click_action": "TOP_STORY_ACTIVITY",
        "body": "Check out the Top Story"
      }
    },
    "apns": {
      "payload": {
        "aps": {
          "content-avaiable": 1
        }
      }
    }
  }
}
  • 發送成功後會回傳 200 OK並顯示該次的 message id
  • Firebase Project ID 可以在 專案設定 > 一般設定 找到
  • Firebase_Token 是firebase-ios-sdk 取得的 Token

Legacy API

舊版本的 API 可以直接發送測試推播,不經由登入驗證,但是在新建立的 Project 已經不支援,在舊的 Firebase Project 目前還能使用。

  • METHOD : POST
  • URL : https://fcm.googleapis.com/fcm/send
  • HEADERS : Authorization:key=你的firebase的伺服器金鑰
  • REQUEST BODY :
1
2
3
4
5
6
7
8
{
  "to": "Replace_Firebase_iOS_Token_with_Clieht_SDK",
  "notification": {
    "title": "Notification Title",
    "body": "This is Body.",
    "payload": "payload"
  }
}

server_key

伺服器金鑰可以在專案設定 > 雲端設定內找到

參考

  1. FCM REST API > Method: projects.messages.send
  2. FCM legacy HTTP API
dinostack.cc
使用 Hugo 建立
主題 StackJimmy 設計