読者です 読者をやめる 読者になる 読者になる

【スマホ】Firebaseで誰でも簡単にプッシュ通知

 

最近話題の「Firebase

 

いわゆるMBaas(Mobile Backend as a Service)で、

サーバーサイドの処理(バックエンド)を代わりにやってくれる優れものです。

 

想像以上に簡単・便利です。

 

複数のプラットフォームに対応(iOSAndroid、Web)。

ほとんどの機能は規模が変わってもずっと無料です。

 

Analytics    分析

AdMob     広告

Authentication  認証

Hosting     ホスティング

Notifications   プッシュ通知

Realtime Database データベース(NoSQL(RDSではない))

Storage            ファイル保存

 

機能はいろいろあるのですが、ここではプッシュ通知をご紹介します。

 

右上にある「コンソールへ移動

f:id:stanleyblenz:20161012231837p:plain

 

 

プロジェクトの作成

適当なプロジェクト名と国名(日本)を選択

f:id:stanleyblenz:20161012232137p:plain

 

AndroidアプリにFirebaseを追加

f:id:stanleyblenz:20161012231942p:plain

 

 

Android Studioで作成しているプロジェクトを指定

(署名証明書は無視して大丈夫です)

f:id:stanleyblenz:20161012232246p:plain

 

google-services.json」というファイルがダウンロードされるので

説明に従い、所定のアプリのプロジェクトに配置

f:id:stanleyblenz:20161012232506p:plain

 

build.gradle(プロジェクトとアプリ)にそれぞれ

説明にしたがい、ライブラリ等を追加 

f:id:stanleyblenz:20161012232731p:plain

 

 

build.gradle
dependencies {
  classpath 'com.google.gms:google-services:3.0.0'//プラグインを指定
}

app/build.gradle
dependencies {
}
apply plugin: 'com.google.gms.google-services'//Gradleプラグインを有効化(dependenciesの中ではない)

 

ちなみにライブラリは以下です。

com.google.android.gms:play-services-appindexing:9.6.1 ※App Indexing
com.google.firebase:firebase-ads:9.6.1 ※AdMob
com.google.firebase:firebase-core:9.6. ※Analytics
com.google.firebase:firebase-auth:9.6.1 ※Authentication
com.google.firebase:firebase-crash:9.6.1 ※Crash Reporting
com.google.firebase:firebase-messaging:9.6.1 ※Cloud Messaging / Notifications
com.google.firebase:firebase-invites:9.6.1 ※Invites / Dynamic Links
com.google.firebase:firebase-database:9.6.1 ※Realtime Database
com.google.firebase:firebase-config:9.6.1 ※Remote Config
com.google.firebase:firebase-storage:9.6.1 ※Storage

 

 

準備がおわったところで、

それではNotificationsの実装です

 

app/build.gradle
dependencies {
  compile 'com.google.firebase:firebase-messaging:9.0.0'//Notifications
}

 

AndroidManifest.xml

<service
  android:name=".MyFirebaseMessagingService">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
  </intent-filter>
</service>
<service
  android:name=".MyFirebaseInstanceIDService">
  <intent-filter>
    <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
  </intent-filter>
</service>

 

MyFirebaseMessagingService.java  ※中身は確認用のログ実装です

public class MyFirebaseMessagingService extends FirebaseMessagingService {

  private static final String TAG = "MyFirebaseMsgService";
  @Override
  public void onMessageReceived(RemoteMessage remoteMessage) {
    Log.e(TAG, "From: " + remoteMessage.getFrom());
    if (remoteMessage.getData().size() > 0) {
    Log.e(TAG, "Message data payload: " + remoteMessage.getData());
    }
    if (remoteMessage.getNotification() != null) {
      String title = remoteMessage.getNotification().getTitle();
      Log.e("Firebase", "title: " + title);
      String body = remoteMessage.getNotification().getBody();
      Log.e("Firebase", "body: " + body);
    }
  }
}

MyFirebaseInstanceIDService.java  ※トークンをサーバに登録

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

  private static final String TAG = "MyFirebaseIIDService";
  @Override
  public void onTokenRefresh() {
    String token = FirebaseInstanceId.getInstance().getToken();
    Log.e(TAG, "token: " + token);
    sendRegistrationToServer(token);//トークンをサーバに登録
  }
}

 

以上、アプリ側の実装は終了です。

 (Mainactivity.javaは適当に実装してください)

 

最後に、Firebase側で、プッシュ通知を送ります。

 

左側のドロワーのNotificationsを選択すると以下のプッシュ通知の画面が開きます。

各項目を選択し、「メッセージ送信」ボタンで、プッシュ通知は完了です。

 

お使いのケータイにプッシュ通知が届いているはずです。

f:id:stanleyblenz:20161012233452p:plain

 

 

 ----------------------------------------------------------------------------------------------------------

 

やはり日本語ドキュメントになっているのが簡単な理由のいちばんでしょうか。

とてもわかりやすいです。衝撃的です(笑)

 

いままでサーバー借りてプッシュ通知を実装(PHP)してというのが

Firebaseを使用すれば不要になります。

 

Firebaseは、データベースやストレージもあるので、

これひとつでとりあえずなんでもできる感じです。

 

Firebaseすごい!!!