要件
Admin SDKを使用するには、Node.js 10.10.0以上が必要です。
firebase-adminのインストール
package.jsonファイルを作成し、firebase-admin npmパッケージをインストールします。
npm init
npm install firebase-admin --save
秘密鍵の作成
- Firebaseコンソールでプロジェクトを開く
- 「プロジェクトの概要」→「Settings」→「新しい秘密鍵の生成」を選択する
- 「キーを生成」を選択し、秘密鍵ファイルをダウンロードする。
SDKを初期化する
秘密鍵のファイルを読み込んで、SDKを初期化します。
// 秘密鍵ファイルのパス
const serviceAccount = require("./serviceAccountKey.json");
const app = admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
// console.log(defaultApp.name); //=> '[DEFAULT]'
特定のデバイスにメッセージを送信する
メッセージを送信するデバイスの登録トークンを設定します。
const registrationToken = 'YOUR_REGISTRATION_TOKEN';
送信するメッセージを作成します。
const message = {
data: { score: '850', time: '2:45' },
token: registrationToken
};
提供された登録トークンに対応するデバイスにメッセージを送信します。
admin.messaging().send(message)
.then((response) => {
// 応答はメッセージID文字列です。
console.log('メッセージが正常に送信されました:', response);
defaultApp.delete();
})
.catch((error) => {
console.log('メッセージの送信中にエラーが発生しました:', error);
defaultApp.delete();
});
複数のデバイスにメッセージを送信する
メッセージを送信するデバイスの登録トークンを設定します。
最大500の登録トークンを含むリストを作成します。
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 + ' 通のメッセージが正常に送信されました');
if (response.failureCount > 0) {
const failedTokens = [];
response.responses.forEach((resp, idx) => {
if (!resp.success) {
failedTokens.push(registrationTokens[idx]);
}
});
console.log('失敗の原因となったトークンのリスト: ' + failedTokens);
}
defaultApp.delete();
})
.catch((error) => {
console.log('メッセージの送信中にエラーが発生しました:', error);
defaultApp.delete();
});
トピックにメッセージを送信する
トピックを付与したメッセージを作成します。
// トピック名
const topic = 'weather';
const message = {
data: { score: '850', time: '2:45' },
topic: topic
};
トピックをサブスクライブしているデバイスにメッセージを送信します。
admin.messaging().send(message)
.then((response) => {
// 応答はメッセージID文字列です。
console.log('メッセージが正常に送信されました:', response);
app.delete();
})
.catch((error) => {
console.log('メッセージの送信中にエラーが発生しました:', error);
app.delete();
});