# 新增Firebase Admin SDK到node server 利用後端伺服器去發送通知給裝置 ## 大綱 - <a href="#安裝">安裝</a> - <a href="#設定金鑰">設定金鑰</a> - <a href="#初始化SDK">初始化SDK</a> - <a href="#發送-單裝置">發送-單裝置</a> - <a href="#發送-多裝置">發送-多裝置</a> - <a href="#發送-特定主題">發送-特定主題</a> ## 安裝 > npm install firebase-admin –save ## 設定金鑰 點擊專案下的服務帳戶<br> ![](https://i.imgur.com/HUbqaMv.png) <br> 產生新的密鑰並放到對應的路徑 ## 初始化SDK ```javascript= var admin = require('firebase-admin'); var serviceAccount = require('path/to/serviceAccountKey.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: 'https://.firebaseio.com' }); ``` ## 發送-單裝置 ```javascript= var registrationToken = 'YOUR_REGISTRATION_TOKEN'; admin.messaging().send(message) .then((response) => { // Response 是一個字串型別的 message ID. console.log('Successfully sent message:', response); }) .catch((error) => { console.log('Error sending message:', error); }); ``` ## 發送-多裝置 ```javascript= // Create a list containing up to 500 registration tokens. // These registration tokens come from the client FCM SDKs. const registrationTokens = [ 'YOUR_REGISTRATION_TOKEN_1', // … 'YOUR_REGISTRATION_TOKEN_N', ]; const message = { data: {score: '850', time: '2:45'}, tokens: registrationTokens, } admin.messaging().sendMulticast(message) .then((response) => { console.log(`${response.successCount} messages were sent successfully`); } ``` ## 發送-特定主題 ```javascript= const topic = 'highScores'; const message = { data: { score: '850', time: '2:45' }, topic: topic }; // Send a message to devices subscribed to the provided topic. getMessaging().send(message) .then((response) => { // Response is a message ID string. console.log('Successfully sent message:', response); }) .catch((error) => { console.log('Error sending message:', error); }); ``` 參考來源: - https://firebase.google.com/docs/admin/setup - https://firebase.google.com/docs/cloud-messaging/send-message