Push通知を実装したくなる

結構なサイトで解説されており手順通りに行えば特に問題もなく実装できそうだったけど、色々と躓いたところもあったので忘備録的なアレです。

参考にしたサイトは以下のサイト。2019-2020年と新しいかったため参考になりました。実装は@yuppejpさんのほうで行いました。

とFCMの公式の実装方法です

まずはテストプロジェクトで一番上のサイトの通りに実装しました。Firebaseのサイトの通知の作成より通知を作って送ることはできました。

最後の「curlでメッセージを投げる」でPOSTでのやり方が書いてあります。この例では特定のトークンのユーザーに対し送る感じです。

まずはここまでしっかり実装して通知がくるようにしておきましょう(結構長い道のりです)。


トピックを指定して送る(ユーザー全体に送る)

僕の場合はアプリを利用しているユーザー全体にプッシュ通知したかったので、少し加筆しておきます。

「ユーザー全体に送る」

というイメージではなく

「任意のトピックを購読(設定)しているユーザーに対して送る」

という感じです。アプリ全体のユーザーに送りたい場合は全ユーザーに任意のトピックを購読するように設定してあげればよいわけです。具体的にはMainActivity.javaに受信したいトピックをsubscribeすればいいだけです。ここでのトピック名はhogehogeです。

これで終わりです。


Nofiticationのアイコンを作る

通知時に出る白黒っぽいアイコンを専用につくらなければなりません

上のサイトを参考に作成し、リソース追加後、マニフェストに記述を追加しました。

通知関連のマニフェスト追加は上のようになると思います。アイコンはic_stat_nameでMyFirebaseMessagingServiceはFirebaseMessagingServiceを継承した独自クラスです。先のサイト通りに実装していればわかるとおもいます。


FCM HTTP APIを使ってテスト送信

しょっぱなからアレなんですが、Googleは「FCM HTTP API」から「FCM HTTP v1 API」への移行を勧めています。

「FCM HTTP API」はトークンを指定するだけで投げれるんですが、非推奨なのでいつ使えなくなるかわからないのでサーバーなどに実装する場合「FCM HTTP v1 API」を用いたほうがよいですが、ステップが増えるので今回は簡単に「FCM HTTP API」でテストします。ちなみに先のサイトはcurlも「FCM HTTP API」を叩いています。

また「curlって何よ」てきな人にはブラウザのプラグインなどにある「REST Client」を使うと便利です。僕はFireFoxの下のプラグインを使っています。

MethodをPOST、ヘッダーにAuthorization: key=[サーバーキー]とContent-Type: application/jsonを入れておいて、BODYにPOSTデータを入れてsendを押せば結果がでます。サーバーキーは[設定]の[Colud Messaging]にあります。

実際のPOSTデータは

のようにトピックを指定します。このときtoで指定するとき「/topics/」をつけないとダメでした。

通知が来れば成功です。送られない場合、レスポンスがちゃんとかえってきているかRESTの結果を見てみてください。それでもダメならトピックを指定しないなどワンステップずつ確認する必要があります。

先にも言った通りこれは「FCM HTTP API」でのテストですが「FCM HTTP v1 API」で実装したほうが将来的にいいと思います。これにはサーバーサイドの問題もあります。実際レンタルサーバー(バリューサーバー)で実装した記事を別に書きたいと思います

追記 記事にしてみました

 

投稿者 まる

Twitter : @dinagon Instagram : @d_dinagon フォロバします!!最近、ESP/Arduinoいじりすぎでアプリ開発が進んでない。歯医者なのに歯のことはあまり触れませんw