Firebaseを使ってAndroid端末にプッシュ通知する

ZAICOでは、Android・iOS・Rubyエンジニアを絶賛募集中です! 詳しくは、採用ページをご覧ください。

好きな場所で働こう

こんにちは! ZAICO開発チームです。
zaicoでは近々TLS1.0/1.1を無効化を予定しています。
これに伴って、TLS1.0/1.1しかデフォルトで対応していない古いAndroid(バージョン4.4.4以前)ではzaicoアプリが使えなくなります。
ただ、今でも古いAndroid端末でアクセスされているユーザーさんはまだ少数ですがいらっしゃいます。
メールなどでも注意喚起しておりますが、そのAndroid端末自体を使っている人にお知らせできないか・・と、以前Firebaseを使ったプッシュ通知を実装していたので、それを使ってユーザーに通知しよう!ということになりました。
今回はFirebaseを使ってAndroid端末にプッシュ通知を行う方法を簡単に紹介したいと思います。
(注)この投稿では全てkotlinでの実装を前提としています。

Firebaseプロジェクトを作成する

最初にFirebaseプロジェクトを作成しておく必要がありますので、Firebaseコンソールからプロジェクトを登録してください。
プロジェクトを作成する際に必ずAnalyticsは有効にしてください。プッシュ通知で使用するクラウドメッセージングには、Analyticsの使用を前提とするためです。
具体的な操作方法は割愛させていただきます。
参考:Firebase プロジェクトについて理解する | firebase.google.com

プロジェクト作成後、後ほどアプリに組み込むための、プロジェクトの設定ファイルgoogle-services.jsonをダウンロードする必要があります。
「プロジェクトを設定」を選択し、「SDKの設定と構成」からダウンロードできます。

参考:設定ファイルをダウンロードする | firebase.google.com

Android側で通知を受け取るための実装をする

Androidアプリのプロジェクトは下記の要件を満たして作成します。

  • Jetpack(AndroidX)を使用します。
  • compileSdkVersion 28 以降

google-services.jsonの配置

先程ダウンロードしたプロジェクトの設定ファイルgoogle-services.jsonをapp直下においてください。

Firebase SDKの追加

プロジェクトレベル(プロジェクトディレクトリ直下、appディレクトリの上)にあるbuild.gradleに以下の記述を追加してください。これらのFirebaseのライブラリが置かれているリポジトリからダウンロードできるようにするための設定です。

buildscript {
  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }
  dependencies {
    ...
    // Add this line
    classpath 'com.google.gms:google-services:4.3.8'
  }
}

allprojects {
  ...
  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    ...
  }
}

アプリレベル(appディレクトリ直下)にあるbuild.gradleに以下の記述を追加してください。FirebaseのAnalyticsとクラウドメッセージングライブラリをインポートする設定になります。なお、

Firebase Android BoM を使用すると、アプリで常に互換性のある Firebase ライブラリ バージョンが使用されるようになります。

とのことです。

plugins {
    id 'com.android.application'
    // Add this line
    id 'com.google.gms.google-services'
}

dependencies {
  // Import the Firebase BoM
  implementation platform('com.google.firebase:firebase-bom:28.0.1')
 
 // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries
  // When using the BoM, you don't specify versions in Firebase library dependencies
  implementation 'com.google.firebase:firebase-messaging-ktx'
  implementation 'com.google.firebase:firebase-analytics-ktx'
}

以上でアプリ側の実装は完了です。アプリをビルド、インストールしてください。

Firebaseコンソールからプッシュ通知を行う

Firebaseコンソールにアクセスし、プロジェクトを選択、サービスの中から「Cloud Messaging」を選択、右ペインで「Send your first Message」を選択してください。

送信するメッセージの内容を設定してください。

「ターゲット」では「アプリ」に今回作成したアプリのパッケージ名を指定してください。

「スケジュール設定」では「現在」を選択してください。送信してすぐに受信することができます。
各種設定をしたら「確認」ボタンをクリック、続いて「公開」をクリックしてプッシュ通知を送信してください。

プッシュ通知の受信

Firebaseからプッシュ通知を送信するとすぐに(場合によっては数分してから)端末の方で受信します。


受信できました!
プッシュ通知をAndroidで受信するだけならたったこれだけで実現できます!
ただ、今回の実装では、デモアプリを開いている時には受信できない(通知が残らない)という問題や、プッシュ通知を受けてアプリ側でアクションをとりたい、という要望が出てくるかと思いますので、さらに改善、実装を進めようと思います。

以上、簡単ですがFirebaseからプッシュ通知を行う方法でした。

参考記事

Android で Firebase Cloud Messaging クライアント アプリを設定する | firebase.google.com

ZAICOでは、新しいテクノロジーの力でモノの状態・流れを把握する仕組みに一緒に取り組む仲間を募集しております。
詳しくは、採用ページをご覧ください。

好きな場所で働こう