AndroidのFirebaseの使い方・実装に関する覚書(Realtime Database等)

久々に開発ネタですね!

ちょっとFirebaseを使う必要が出てきたのですが

Firebaseってめちゃくちゃ便利なんですけど諸々の制約があったりとかで

いまいち盛り上がっていないんですよね。

その関係で必要な情報が中々見つからなかったり

ちょっと苦労したので、

また将来使いたくなった時のために覚え書きしておきます。

まずはFirebaseの登録ですね。

Firebase
Firebase は、質の高いアプリの作成とビジネスの成長に必要なツールとインフラストラクチャを提供します。

ここでユーザー登録、もしくは既存のアカウントを使うのであればログインします。

そしてコンソールへ移動後

新規プロジェクトを作成

そしてわかりやすいプロジェクト名を入力して日本を選択

プロジェクト作成

あ、この間に自分のアプリのパッケージ名をコピーしておきましょう。

そしたらAndroidアプリにFirebaseを追加をクリック

パッケージ名の入力欄に実装するアプリのパッケージ名を入力

その他はとりあえず入れなくて大丈夫です!

そのままアプリを追加

Download google-services.json

続行

終了

とりあえずこれでOK!

次はアプリ側の処理です。

アプリのbuild.gradleに

とりあえずこの辺の三つを追加

ここは必要に応じて変わってくると思います。

それから一番下に

これを記述

先ほどダウンロードしたgoogle-services.jsonを

appディレクトリに追加

Applicationクラスを作成して

初期化処理を追加

Appをmanifestに登録

変数宣言

FirebaseアプリのURIですが

Firebaseの管理ページで

「Database」の項目を開くと

「https://プロジェクト名.firebaseio.com/」

というのがあるはずなので

これを入れます。

パスの部分の説明の前に

次はデータベースの設定です。

本当はセキュリティを色々考えなければいけないのですが、

今回は複雑なことはしないのでルールを公開用に変えます。

ルールタブを開いて以下のように変更

こんな感じに値を追加できます。

そしてこの

「Connect_Flag」というのが

上の「パス」にあたる部分です。

こうすることでConnect_Flagの値を取得できます。

これでリスナーを登録します。

こうしておくことで

登録したパスの値(今回はConnect_Flag)が変更されたときに

リアルタイムにonDataChangeが呼ばれることになります。

そしてここまでで今回の私の目的はほぼ達成されます。

勘のいい方はお分かりかと思いますが、

今回の実装ではFirebaseのこのリアルタイムデータベースを利用して

リアルタイムにサーバの変化を観測したいと思っております。

このRealtime Databaseはめちゃくちゃ便利なのですが、

データベースの設計がちょっと特殊だったり

自分のサーバとの連携がとりづらかったりと欠点もあります。

なので、あくまでも今回は着火係として使いたいと思っております!

想定としては

チャット・データをサーバへ送信

→同時にFirebaseのRealtime Databaseの値変更

→他の端末のonDataChangedが呼ばれる

→サーバ(Firebaseではない)にデータを問い合わせ

→リアルタイムに情報更新!

こんな感じになります。

そのためにはとりあえずFirebaseのRealtime Databaseへの書き込みも必要ですね。

今回は上記の通り値の変更を必要なタイミングではっせいさせられればいいので

これでOKです!

適当に乱数を生成して

setValueで送信しています。

あ、ちなみに”/Connect_Flag”の部分ですが

いちいち上で書いたみたいにchild(“Connect_Flag”)としなくても

予め操作対象が決まっている場合は初期化時点でURLみたいな感じに指定することが出来ます。

とりあえずこれでOKですね!

今回はかなり特殊な実装なので参考にならない部分もあるかと思いますが、

一通り流れについて書いておきましたっ!

最後にビルドしたらなんか

Duplicate files copied in APK META-INF/LICENSE.txt

エラーが出たので

これを無視してビルドする記述をbuild.gradleに追加

Top