LoginSignup
38
40

More than 5 years have passed since last update.

FirebaseをAndroidアプリで操作する

Posted at

FirebaseのデータにアクセスするAndroidアプリを作成した結果を備忘録として投稿します。

Firebaseとは

Firebaseは、Googleが提供しているBasSサービスです。リアルタイム通知可能、かつアクセス制御可能なオブジェクトデータベース機能に加え、認証機能も持っています。

ブラウザ(Web), モバイルアプリ(iOS, Android)からFirebaseのデータにアクセスすることができます。

Firebaseの使い方は以下のサイトを参考にしてください。
* Fireabse Developer Docs
* リアルタイム・バックエンドサービス「Firebase」を使ったWebアプリ作成 | infoScoop開発者ブログ

Androidアプリ

Android Quickstart - Firebaseを参考にして、FirebaseにアクセスするAndroidアプリをAndroid Studioを使って作成しました。

手順

  1. Firebaseアプリを作成します
  2. Android Studioで新規プロジェクトを作成します
  3. Firebase clientライブラリをインストールします
  4. Android permissionを追加します
  5. Firebaseへのアクセス処理を追加します

Firebaseアプリ作成

リアルタイム・バックエンドサービス「Firebase」を使ったWebアプリ作成 | infoScoop開発者ブログを参考に、Firebaseアプリを作成してください。

Androidアプリ用新規プロジェクト作成

File-New-New Projectから新規プロジェクトを作成します。Activityを作れるならばどのタイプのテンプレートでもOKです。

Firebase clientライブラリのインストール

Android Atudioでプロジェクトに組み込まれているbuild.grandleを編集します。

dependencies {
  ...
   compile 'com.firebase:firebase-client-android:2.0.3+'
}

ビルドエラーになるので以下の記述も追加します。

android {
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE-FIREBASE.txt'
        exclude 'META-INF/NOTICE'
    }
    ...
}

Android permissionを追加

AndroidManifest.xmlにインターネット接続用パーミッションを追加します。

    <uses-permission android:name="android.permission.INTERNET" />

Firebaseへのアクセス処理を追加します

Activity.onCreateにFirebaseアクセス処理を追加します。

    private Firebase mFirebaseRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // クライアントライブラリにコンテキスト(Activity)をセットします。
        Firebase.setAndroidContext(this);

         // Firebaseアプリへの参照を取得します
        mFirebaseRef = new Firebase(FirebaseアプリのURI);

        // 操作対象の参照を取得します         
        Firebase child = mFirebaseRef.child(データパス);
}

データ取得

操作対象に対してaddValueEventListenerを追加します。追加した時点でonDataChangeが呼び出されます。2回目以降は、対象データが変更されると呼び出されます。

    child.addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot snapshot) {
            // snaphost.getValue()でデータを参照する。
        }

        @Override
        public void onCancelled(FirebaseError error) {
        }

    });

getValueしたデータは、HashMap形式になっています。
Snapshot_getValue.png

データセット

setValueでデータを追加します。値がnullの場合には項目が削除されます。Listerner登録しておくとセットした結果が通知されます。

    Map<String, String> data = new HashMap<String, String>();
    data.put("content", "Hello");
    child.setValue(data, new CompletionListener() {
        public void onComplete(FirebaseError error, Firebase ref) {
        };
    });

ユーザ認証

Firebaseのデータはデフォルトで誰でも読み書き可能になっています。Ruleを追加することによってアクセス制御することができます。アクセス権がないデータにアクセスするとFirebaseError(Permission error)になります。アクセス制御は以下のページを参照してください。

FirebaseのRulesを理解する - Qiita

アプリ実行

Androidアプリはemulator上からもFirebaseにアクセスできます。

38
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
40