遅れてしまいましたが、Fusetoolsアドベントカレンダー23日目の記事です。今日はFirebaseを使ったPush通知について書きます。
Push通知を実装する場合、Google Play Serviceライブラリを事前にインストールしておく必要があります。こちらを参考に準備しておいてください。また、アプリのターゲットAPIレベルに応じたシステムイメージ等もインストールされていないと、コンパイルエラーになってしまうので、ここで一緒にインストールすることをオススメします。
一応公式サイトに、Push通知の実装の仕方がありますが、このままやってもうまくいきません。2016年の9月から、GCMを使う場合はFirebaseに移行する必要があるみたいです。Firebaseでの設定を行わないと、401 Authentication Errorが返されます。詳細はGCMのリファレンスをご覧ください。
それで、FuseでFirebaseを使ったプッシュ通知を実装したいのですが、今のところは公式にサポートしてないっぽかったので、Community packagesのFuse.FirebaseのFirebaseを使った認証サンプル(Fuseの社員の人が作ったやつっぽい)を参考に進めました。
※ macOSの場合はCocoapodsが必要らしいので、インストールしておきます。
sudo gem install cocoapods
まずはリポジトリをローカルに落とします。その内、必要なのは下記です。
- /AuthExample/AndroidImpl.uxl
- /AuthExample/generate_xml_from_google_services_json.py
AndroidImpl.uxl
は、ビルド時に行くつかのファイルを正しい場所に入れるための設定ファイルです。
generate_xml_from_google_services_json.py
は、Firebaseにアプリを追加した際に生成される.jsonファイルからXMLファイルを作ってくれる、Googleが出している、Gradleのプラグインです。
上記2つのファイルを、自分のFuseプロジェクト内の.unoproj
と同階層に入れてください。
それがおわったら、Firebaseにプロジェクトを作り、アプリを追加します。ここも説明していると長くなっちゃうので、@SnowMonkeyによる【Android】30分で実装するPush通知【Firebase】などを参考に進めてください。(デバッグ用のSHAキーの設定や、gradleへの追加は今回は不要です。)必要なのは、途中でダウンロードされる.jsonファイルです。こちらをプロジェクトフォルダに追加して、さきほどダウンロードしたpythonファイルを実行します。
python generate_xml_from_google_services_json.py
実行後は.pythonは不要なので消しちゃいます。ここまででプロジェクトファイルの構成は下記のようになります。
sample
|- AndroidImpl.uxl
|- google-services.json
|- googleservices.xml
|- sample.unoproj
|- MainView.ux
ここまでできたら、ビルドしてアプリを立ち上げます。
fuse build -t=Android -r
後はfirebaseコンソールから、notificationを送るだけです!!!アプリがバックグラウンドでないと、通知がきません。フォアグラウンドの場合は、別で実装が必要らしいです。
途中からこれ、あんまFuse関係なくね!?と思いましたが、まぁそんなことはいいのです。Firebaseの手軽さを実感しました。