【Android】FCMを使ったpush通知の実装方法

AndroidでFCM(Firebase Cloud Messaging)を使ったpush通知を実装する方法です。

FCMの前身であるGCM(Google Cloud Messaging)が2019年4月に廃止されるとのことなのでこれからはFCMを使いましょう!

参考:https://developers-jp.googleblog.com/2018/04/time-to-upgrade-from-gcm-to-fcm.html

言語はkotlinです。

動作環境は以下のとおりです。

mac High Sierra 10.13.6
Android Studio 3.2
targetSdkVersion:28
compileSdkVersion:28
kotlin:1.2.71

Firebaseにプロジェクトを登録

Firebaseのコンソールへログインしてプロジェクトを登録します。(https://console.firebase.google.com/
プロジェクトを追加したらoverviewからアプリを登録します。(今回はAndroid)

ここでダウンロードできる「google-services.json」が後で必要になるのでどこかに保存しておいてください。

Firebaseの導入

さっきfirebaseコンソールでダウンロードしてきたgoogle-services.jsonを/app直下に入れます。

gradleにライブラリを追加(バージョンは2018/11/20時点で最新のもの)
 ・projectレベル

 ・appレベル

実装例

Firebaseの公式に記載されている方法はバージョン17.1.0から非推奨になってます。

参考:https://qiita.com/taki4227/items/9d292c3badd2c4015061

なのでこちらにも記載されているようにFirebaseMessagingServiceクラスを使います。

今回は送信されてきたjsonのtitleとbodyをそれぞれ通知エリアの「タイトル」と「テキスト」に表示させてます。

メソッドは新しいトークンが生成された時の「onNewToken」、プッシュ通知を受信する「onMessageReceived」と通知エリアに表示するための処理も実装します。

また、Android8(Oreo)以上はチャンネルの設定をしなければ表示されないのでその処理も書きます。

ちなみにですがヘッドアップ通知(上から小さいウインドウが出てくる)をするにはbuilderとチャンネルの優先度と通知を最大にして音か振動のいずれかを出す必要があります。

https://developer.android.com/about/versions/android-5.0-changes?hl=ja#BehaviorNotifications(ヘッドアップ通知のあたり)

トークンが新しく生成された時以外で取得するにはonCreateなどで以下のように取得できます。

manifestファイルの設定

上で実装したクラスをmanifestファイルへ登録します。

 

最後に

これでFirebaseコンソールやPostmanなどで上で生成されたトークンを使えばpush通知が届くと思います。

Android8以上だとチャンネルを登録しないといけない点に注意ですね。

【参考サイト】

https://qiita.com/flatfisher/items/bdec83caf3c7f9c8917c

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ABOUTこの記事をかいた人

エンジニア NNN

Androidエンジニア。SIerでJavaの業務アプリケーション開発、個人でのAndroidアプリ開発を経てVillnessへジョイン。