LoginSignup
12
12

More than 5 years have passed since last update.

Firebase Console からトピックに対して通知を送りたい

Last updated at Posted at 2016-11-02

簡単にトピックを送信する方法(裏技?)があるが、ドキュメントに書いてなかったのでここにメモしておいた。

Firebase Console からトピックを送る上での問題

Firebase の通知管理画面は以下のような感じになっていて、ラジオボタンからトピックを選び、矢印のところからトピックが選択できる

Firebase_Console.png

一見便利そうに見えて不便なところがある。

  • セレクトボックスとなっているので、選択式になっていて入力することができない。
  • ここには反映されるまでに時間がかかる(1日ぐらい待たされる感じがする)ので、ストレスが溜まる。

代替手段

そこで以下のように「単一の端末」を選んでトピック欄に「/topic/トピック名」と入力して送信すると、特定のトピックに送信することができる。
Firebase_Console.png

この仕様は何?

Firebase Notification も裏側の実装は FCM であることを考えると、これは納得がいく仕様であることが理解できる。

FCM で単一の端末に対して通知を送る際は以下のような感じで API に対して json を送信する。

{
  "to" : "個別の端末のTOKEN",
  "notification": {
    "title": "タイトルです",
    "body": "メッセージです",
    "content_available": true,
  },
  "priority" : "normal",
  "data": {
    "hoge": "foo"
  }
}

これに対し、FCM でトピックに対して通知を送る際は以下のような感じで API に対して json を送信する。

{
  "to" : "/topics/topic_name_daaa",
  "notification": {
    "title": "タイトルです",
    "body": "メッセージです",
    "content_available": true,
  },
  "priority" : "normal",
  "data": {
    "hoge": "foo"
  }
}

そう、to の中身が変わっただけだ。たぶん Firebase console の裏側の実装も to を置き換えているだけだから、このような動きをするのだと思われる。

ちなみに送信するときに使用した curl はこんな感じ

curl --header "Authorization: key=MYKEYYYYYY" --header Content-Type:"application/json" https://fcm.googleapis.com/fcm/send -d @info.json
12
12
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
12
12