LoginSignup
8
5

More than 5 years have passed since last update.

FCMの対象端末へのプッシュ通知をGAS使って簡単に実現する

Posted at

はじめに

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。

終わりに

ね、簡単でしょ?

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5