[Firebase] Messaging 推播訊息 # 2 利用Nodejs發送推播

閱讀時間約 12 分鐘
Firebase 推播訊息 的第二篇文章是在說明當 Firebase 專案建立完成之後,如何利用Nodejs和專案裡的金鑰將message推播出去
本篇會先介紹如何建立一個Nodejs專案,再介紹如何透過程式將訊息推播出去。
  1. 首先建立一個sendMsg的資料夾
mkdir sendMsg
2. 進入sendMsg 資料夾後執行npm init
cd sendMsg
npm init
3. 接下來一直按enter會出現下列command,最後輸入yes
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (sendmsg)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to D:\exampleProject\sendMsg\package.json:

{
"name": "sendmsg",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}


Is this OK? (yes)
4. 再來直接在command line 直接輸入code . ,vscode會直接開啟資料夾,或是開啟vscode再引入sendMsg資料夾也可以,目的是要開啟sendMsg資料夾
5. 在sendMsg資料夾內新增index.js
6. 再新增key.json,將剛才firebase的私密金鑰內容完整的貼進來
7. 再來我們要在資料夾內安裝需要的npm
npm i https googleapis -s
8. 之後在index.js輸入下列程式碼
const https = require('https')
var {google} = require('googleapis')

const key = require('./key.json')
const PROJECT_ID = key.project_id;
const HOST = 'fcm.googleapis.com';
const PATH = '/v1/projects/' + PROJECT_ID + '/messages:send';
const MESSAGING_SCOPE = 'https://www.googleapis.com/auth/firebase.messaging';
const SCOPES = [MESSAGING_SCOPE];



function getAccessToken() {
return new Promise(function(resolve, reject) {
const jwtClient = new google.auth.JWT(
key.client_email,
null,
key.private_key,
SCOPES,
null
)
jwtClient.authorize(function(err, tokens) {
if (err) {
reject(err);
return;
}
resolve(tokens.access_token);
});
});
}

/**
* Send HTTP request to FCM with given message.
*
* @param {object} fcmMessage will make up the body of the request.
*/
function sendFcmMessage (fcmMessage) {
getAccessToken().then(function(accessToken) {
const options = {
hostname: HOST,
path: PATH,
method: 'POST',
// [START use_access_token]
headers: {
'Authorization': 'Bearer ' + accessToken
}
// [END use_access_token]
};

const request = https.request(options, function(resp) {
resp.setEncoding('utf8');
resp.on('data', function(data) {
console.log('Message sent to Firebase for delivery, response:');
console.log(data);
});
});

request.on('error', function(err) {
console.log('Unable to send message to Firebase');
console.log(err);
});

request.write(JSON.stringify(fcmMessage));
request.end();
});
}

/**
* Construct a JSON object that will be used to define the
* common parts of a notification message that will be sent
* to any app instance subscribed to the news topic.
*/
function buildCommonMessage() {
return {
'message': {
'topic': 'all',
'notification': {
'title': 'FCM Notification',
'body': 'Notification from FCM',
}
}
};
}


const commonMessage = buildCommonMessage();
console.log('FCM request body for message using common notification object:');
console.log(JSON.stringify(commonMessage, null, 2));
sendFcmMessage(buildCommonMessage());
9. 完成之後,要用node 去執行index.js的程式發送message,在command line下輸入:
node index.js
10. command line就會出現
FCM request body for message using common notification object:
{
"message": {
"topic": "all",
"notification": {
"title": "FCM Notification",
"body": "Notification from FCM",
}
}
}
Message sent to Firebase for delivery, response:
{
"name": "projects/test-18a9a/messages/2560468080093694458"
}
11. 依照firebase官方文件,response出現下列文字就是正常可以發送
{
"name": "projects/test-18a9a/messages/2560468080093694458"
}
參考文件
就如之前所說明的,此方式是針對topic推播訊息,如果需要針對應用程式,就要先將FCM TOKEN全部記錄下來。
4會員
12Content count
所有文章都是將自已工作上的經驗,透過篇章的方式,希望能夠將技術白話文,讓想入門的工程師能夠清楚的理解, 出版的頻率會是幾個月一篇,也有可能是一星期好幾篇,就看當下是否有空閒產出。某些特定文章會希望以付費方式呈現,如果有什麼問題,歡迎大家隨時留言
留言0
查看全部
發表第一個留言支持創作者!
Daniel 的沙龍 的其他內容
現行在開發需求上遇到即時推播訊息,其中一個推播方式就是利用firebase發送,並且讓應用程式即刻的收到推播,本篇一步一步的建立專案並且可以發送訊息。 前提: 目前利用程式向firebase 發送推播有三種方式 SEND TO TOKEN (針對device所產生的token) SEND TO TO
現行在開發需求上遇到即時推播訊息,其中一個推播方式就是利用firebase發送,並且讓應用程式即刻的收到推播,本篇一步一步的建立專案並且可以發送訊息。 前提: 目前利用程式向firebase 發送推播有三種方式 SEND TO TOKEN (針對device所產生的token) SEND TO TO
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
最近碰到個神奇的需求,App啟動時,才要用firebase remoteConfig去決定初始畫面。該文章詳細介紹了在App啟動時如何利用firebase remoteConfig去決定初始畫面,以及解決在推播的情況下造成跳轉無效的問題。
Thumbnail
欲傳送之內容,由使用者輸入於文字檔內,執行本執行檔後,指定之LINE群組全員,將會收到推播訊息
Thumbnail
不管行銷演化到哪一個載體,傳統紙本、網路、影音平台,都一樣不脫離它的本質 - 打動人心的文案內容,這仍是有效行銷的關鍵。
Thumbnail
Firebase是一個強大且廣受歡迎的移動和網路應用程序開發平台,它提供了一系列的工具和服務,幫助開發者建立高效、可靠且具有豐富功能的應用程序。本文將介紹Firebase的核心功能、設置和集成方式,並分享實用功能、進階功能以及安全性和性能優化的技巧,以幫助您打造強大的應用程序。
Thumbnail
在之前分享了卡片盒筆記法的閱讀心得後,我不禁開始思考如何實際運用這種筆記方法,以改善自己的寫作能力。恰巧近幾個月來,我開始培養有效利用碎片化時間的習慣。意識到在繁忙的日程中,仍然有許多碎片化的時間被浪費,我決定嘗試充分利用這些時刻...
Thumbnail
「用 google 查詢是查得到該報各地報導的,但我就等著看該報粉專會不會推播台北、新北、桃園、新竹、台中、台南的當地報導。」
Thumbnail
Hhost 是一個基於 Hasura 並且整合了 Serverless、PostgreSQL、Auth、Storage 的一體化 BaaS 服務,主要的假想敵為 Firebase 而目標是將網站系統開發盡可能的精簡與可拓展化。
Thumbnail
Firebase Realtime Database 是一個 NoSQL 即時雲端資料庫,支援多平台(JavaScript SDKs、Android、iOS),可以讓使用者即時取得資料庫的資料。
Thumbnail
📖好文推薦:【青春煉獄:網路獵騙性私密影像事件簿】 ✏️摘自內文: 💬議題反思: https://www.mirrormedia.mg/projects/image_based_sex_abuse_scam/ 🌱抽獎資格🌱 限中央大學校內人士/校友 追蹤按讚我們的粉專 🌱抽獎方式🌱
Thumbnail
一個APP在規劃的時候可能覺得主要功能就只有這一兩個,實作起來應該不難,卻忘了現代人的胃口已經越養越大,很多不在你預期內但對於使用者來說卻是很基本的功能;另一種是商店上架或是第三方要求的必要功能。今天我們先來探討其中重要的一項:推播〔Push Notification。
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
最近碰到個神奇的需求,App啟動時,才要用firebase remoteConfig去決定初始畫面。該文章詳細介紹了在App啟動時如何利用firebase remoteConfig去決定初始畫面,以及解決在推播的情況下造成跳轉無效的問題。
Thumbnail
欲傳送之內容,由使用者輸入於文字檔內,執行本執行檔後,指定之LINE群組全員,將會收到推播訊息
Thumbnail
不管行銷演化到哪一個載體,傳統紙本、網路、影音平台,都一樣不脫離它的本質 - 打動人心的文案內容,這仍是有效行銷的關鍵。
Thumbnail
Firebase是一個強大且廣受歡迎的移動和網路應用程序開發平台,它提供了一系列的工具和服務,幫助開發者建立高效、可靠且具有豐富功能的應用程序。本文將介紹Firebase的核心功能、設置和集成方式,並分享實用功能、進階功能以及安全性和性能優化的技巧,以幫助您打造強大的應用程序。
Thumbnail
在之前分享了卡片盒筆記法的閱讀心得後,我不禁開始思考如何實際運用這種筆記方法,以改善自己的寫作能力。恰巧近幾個月來,我開始培養有效利用碎片化時間的習慣。意識到在繁忙的日程中,仍然有許多碎片化的時間被浪費,我決定嘗試充分利用這些時刻...
Thumbnail
「用 google 查詢是查得到該報各地報導的,但我就等著看該報粉專會不會推播台北、新北、桃園、新竹、台中、台南的當地報導。」
Thumbnail
Hhost 是一個基於 Hasura 並且整合了 Serverless、PostgreSQL、Auth、Storage 的一體化 BaaS 服務,主要的假想敵為 Firebase 而目標是將網站系統開發盡可能的精簡與可拓展化。
Thumbnail
Firebase Realtime Database 是一個 NoSQL 即時雲端資料庫,支援多平台(JavaScript SDKs、Android、iOS),可以讓使用者即時取得資料庫的資料。
Thumbnail
📖好文推薦:【青春煉獄:網路獵騙性私密影像事件簿】 ✏️摘自內文: 💬議題反思: https://www.mirrormedia.mg/projects/image_based_sex_abuse_scam/ 🌱抽獎資格🌱 限中央大學校內人士/校友 追蹤按讚我們的粉專 🌱抽獎方式🌱
Thumbnail
一個APP在規劃的時候可能覺得主要功能就只有這一兩個,實作起來應該不難,卻忘了現代人的胃口已經越養越大,很多不在你預期內但對於使用者來說卻是很基本的功能;另一種是商店上架或是第三方要求的必要功能。今天我們先來探討其中重要的一項:推播〔Push Notification。