# 新增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>

<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