Help us understand the problem. What is going on with this article?

無料で使えて送り放題!Google I/Oで発表されたFirebase Notificationを使ってみた

More than 3 years have passed since last update.

先日開催されたGoogle I/O
そこで無制限で使い放題だって発表されたFirebase Notification
今回はプッシュ通知を送る必要があったのでさっそく導入してみました!
正直導入が簡単すぎて……さすがGoogle、恐ろしい子……

Firebaseを使う準備

まずはFirebaseにアプリを登録するところから始めます。
このステップさえやってしまえばこれ以降いとも簡単にFirebaseの機能が使えるようになります。

まず、Firebaseのページを開きます。

fire.PNG
See our new website → GET STARTED FOR FREEと進んでいきます。

start.PNG

new.PNG
新規プロジェクトを作成!

regist.PNG
わかりやすい名前を付けてプロジェクトを作成します。

a.PNG
ここから自分のアプリの登録になります。今回はAndroidアプリに導入してみます。

gh.PNG
自分のアプリのパッケージ名を入力します。
証明書は入力してもしなくてもどっちでもいいです(Notificationには使わないので)

ggggg.PNG
jjj.PNG
アプリを追加ボタンを押すとjsonファイルが勝手に生成されて勝手にダウンロードが始まります。
なのでDLしたjsonファイルを図の説明通り自分のアプリのプロジェクトに追加していきます。

build.gradle(project/build.gradle)
buildscript {
  dependencies {
    // Add this line
    classpath 'com.google.gms:google-services:3.0.0'
  }
}
build.gradle(project/app-module/build.gradle)
...
// Add to the bottom of the file
apply plugin: 'com.google.gms.google-services'

次にbuld.gradleに上記2行を追加するだけでFirebaseの準備が終わります。
これでFirebaseのいろいろな機能が使えるようになりました!
やったぜ!

一番簡単なNotification導入

build.gradle(project/app-module/build.gradle)
compile 'com.google.firebase:firebase-messaging:9.0.0'

この1行を追加します。おわり。
これだけでコンソールから送ったメッセージをNotificationに表示することが出来ます。
簡単!
ただこのままではアプリがバックグラウンドにいる時しかメッセージを受け取れません。
これ気づかなくてかなり悩んだw
よく見るとドキュメントに目立つように書いてあるんだからちゃんと読めよってお話。
note.PNG

フォアグラウンドでの処理は後述するとしてとりあえずメッセージを送ってみましょう!

Notificationを送信してみる

hh.PNG
このアイコン(もしくは左のメニュー)からNotificationのページに遷移します。

nn.PNG
最初のメッセージを送信してみましょう。

y.PNG
送りたいメッセージ文とターゲットだけ指定すればすぐメッセージを送ることが出来ます。

aaaa.PNG
タイトルを指定したり、カスタムデータを入れることもできます。これによって通知を開いたときの挙動などをonLaunch()で制御することが出来ます。
設定が終わったら送信ボタン!

Screenshot_20160522-220029.png
2秒くらいできます。すごい!
これで誰でも簡単にプッシュ通知が可能になります。やったね!

フォアグラウンドにいる時もメッセージを受け取る

フォアグラウンドにいる時にも処理を行いたい場合はFirebaseMessagingServiceを継承したクラスを作り、そこで処理を行う必要があります。

MessageService.java
public class MessageService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        Log.d("NANAMIN", remoteMessage.getNotification().getBody());

        // プッシュ通知来た時にやりたいことをここら辺に書く
    }
}

また、マニフェストに以下を追加します。

AndroidManifest.xml
<service
    android:name=".service.MessageService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

これでアプリがフォアグラウンドにいる時も処理ができるようになりました。:tada: :tada: :tada:

今までお金かかりそうだしなんか大変そうだし敬遠しがちだったプッシュ通知、ここまで簡単に実装できるとなるとアプリ作る時にかなり幅が広がる感じがしますね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした