いんでぃーづ

ゲームいろいろ、いろいろ自由

AndroidのUnityアプリで簡単・無料のプッシュ通知(Firebase神だった)

前回Firebaseを使ってiOSにプッシュ通知を行いましたが、MemberCenterでのやりとりに、かなり時間をとられる結果となりました。

その点、AndroidもFirebaseもGoogleのプロダクトであるためか、かなり簡略な手順でプッシュ通知受信を実装することができます。


Firebaseとプッシュ通知

Googleが運営しているモバイルバックエンドサービスです。

むっちゃ高機能&多機能です。

Firebase

しかも無料! 素敵! キャリアウーマン!

Androidのプッシュ通知は以前GCMという名称で独立したサービスでしたが、現在はFCMという名称でFirebaseに統合されています。

Firebaseにプロジェクトを作成

Firebaseコンソールにログインし、新規プロジェクトを作成します。

f:id:sugar_affordance:20170120201720p:plain

下のダイアログが出るので

f:id:sugar_affordance:20170120201745p:plain

プロジェクト名を入れ、国/地域 は日本にしておきましょう。

画像に書いてあるように、作成できるプロジェクト数には限りがあるので注意。

アプリを追加

プロジェクトを作成できたら、トップ画面からAndroidアプリを追加します。

iOSアプリを追加済みの場合、「別のアプリを追加」からAndroidを選択。

f:id:sugar_affordance:20170121082903p:plain

f:id:sugar_affordance:20170121082948p:plain

下のダイアログが出ます。

f:id:sugar_affordance:20170121090349p:plain

「パッケージ名」を入力して次へ。

google-services.jsonというファイルがダウンロードされるので、保存しておきます。

ダイアログは終了してOK。gradleの設定はしません。

Unityの設定

さて、Unityでプロジェクトを作成しましょう。

UnityにSDKを導入する

Unity用FirebaseSDKダウンロードサイトからDOWNLOAD THE SDKボタンでSDKをダウンロードし、
解凍したファイルからFirebaseMessaging.unitypackageをUnityプロジェクトにインポートします。

そしてさっきダウンロードしたgoogle-services.jsonをプロジェクトのどこかにドラッグ&ドロップします。置き場所はどこでもかまいません。

Firebaseのコードを実装

ソース、書こう。

中身はiOSと同じもので問題ありません。マルチプラットフォームで展開しているアプリにはありがたいことでございます。中身は前回公式サイト参照。

Firebase.Messaging.FirebaseMessaging.TokenReceived で受け取るtokenという文字列は、実行したデバイスを表す一意な値です。
Firebaseのコンソールから特定の端末にのみ通知を送りたい場合に使用するので、デバッグ用端末などのトークンはlogcatで出力してメモっておきましょう。

ビルド

ここまでで準備が完了です。やはりiOSに比べるとかなり手軽に試せますね。

Android向けにビルドしましょう。
やりかたがわからない方はこちらの記事参照。

本来ならばプッシュを受信するためのServiceクラスなどをプラグインで作成すると思うのですが、
Unity用FirebaseSDKにデフォルトの実装がされているっぽいので、そのままでプッシュ受信ができます。神ですね

Firebaseから通知を送信

FirebaseコンソールのメニューからNotificationsを選択。

f:id:sugar_affordance:20170120203249p:plain

「新しいメッセージ」から通知を投げられます。

特定の端末にだけ投げたい場合、FirebaseMessaging.TokenReceivedで取得したトークンを使います。


先日FabricがGoogleに買収されましたね。
そのあとフォローするように「Firebaseと完全にうまくいくようにするし、今のFirebase用のソースは変える必要ないよ!」みたいなメールが来てました。

無料のmBaaSはモバイル開発者にとってはありがたい存在です。


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。