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

更新於 2023/05/27閱讀時間約 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全部記錄下來。
為什麼會看到廣告
avatar-img
4會員
12內容數
所有文章都是將自已工作上的經驗,透過篇章的方式,希望能夠將技術白話文,讓想入門的工程師能夠清楚的理解, 出版的頻率會是幾個月一篇,也有可能是一星期好幾篇,就看當下是否有空閒產出。某些特定文章會希望以付費方式呈現,如果有什麼問題,歡迎大家隨時留言
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Daniel 的沙龍 的其他內容
現行在開發需求上遇到即時推播訊息,其中一個推播方式就是利用firebase發送,並且讓應用程式即刻的收到推播,本篇一步一步的建立專案並且可以發送訊息。 前提: 目前利用程式向firebase 發送推播有三種方式 SEND TO TOKEN (針對device所產生的token) SEND TO TO
現行在開發需求上遇到即時推播訊息,其中一個推播方式就是利用firebase發送,並且讓應用程式即刻的收到推播,本篇一步一步的建立專案並且可以發送訊息。 前提: 目前利用程式向firebase 發送推播有三種方式 SEND TO TOKEN (針對device所產生的token) SEND TO TO
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
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
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
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。