はじめに
FCMのプッシュ通知、便利ですよね。でも、ちょっとした個人向けのアプリにわざわざPush通知用のサーバーを用意したりするのは面倒ですよね?
はい、GASを使ってパパッとやっちゃいましょう。
#FCMとAndroidの設定
といっても外部の記事に丸投げします。
AndroidアプリにFirebase Cloud Messagingを実装する(1) - アプリとFirebaseを接続する
AndroidアプリにFirebase Cloud Messagingを実装する(2) - アプリでメッセージを受信する
GASの設定
以下のテンプレをカスタマイズして使えばさっくり実現できる
main.gs
Const = {
FCMServerKey: "AAAAW1C_znk:APA91bHcG..."
}
function sendNotification(token, value1, value2) {
var data = {
"to": token,
"data":{
"value1": value1, //hogehoge
"value2": value2 //mogemoge
}
}
var auth = "key=" + Const.FCMServerKey;
var headers = {
'Authorization': auth,
"contentType" : "application/json",
};
var options = {
"method" : "post",
"payload" : data,
"headers" : headers,
"muteHttpExceptions": true
};
var url = "https://fcm.googleapis.com/fcm/send";
var res = UrlFetchApp.fetch(url, options);
Logger.log(res);
return res;
}
実装のポイント
- FCMServerKeyはFirebaseの設定アイコン>クラウドメッセージングと開けば書いてある(参考)
- tokenは端末トークン。
onNewToken
で通知されるやつ。GAS側で保存するならSpreadsheetに保存すれば一瞬で終わる。 - dataのJSONの中身は割と自由に書ける。サンプルでvalue1,2としたが、数の制限もないし、構造の縛りも特にない、はず。ただし一度に送信できるバイト数の上限が決まっているので大きなデータはNG(たしか上限4kByteくらいだった気がする)。
- Android側では
"data": {"data": { "value1": "hogehoge" , "value2": "mogemoge" } }
というデータ構造で受信する。あとはGSONなりを噛ませればOK。
終わりに
ね、簡単でしょ?