Firebase Remote Config を Android で試してみる

Firebase Remote ConfigをAndroidで使ったときのサンプル作成までの道のり。

Firebasedeの準備から。Firebaseのサイトにログインしてプロジェクトを作成。作成後、「Android アプリに Firebase を追加」で流れに乗れば、「google-services.json」がダウンロードされ、build.gradleの記述など説明があるので確認しておきます。

Androidで使うパラメータも作成して、Firebaseサイトでの作業は完了。
20161130-001

 

プロジェクトに設定を追加していきます。ダウンロードした google-services.json を Project/app にコピーして、先ほどの指示をベースにbuild.gradleを修正。

build.gradle は、結果としてこんな感じ。

Project

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Module

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId 'com.example.remoteconfig1'
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.1'
    compile 'com.google.firebase:firebase-config:10.0.1'
    testCompile 'junit:junit:4.12'
}

 apply plugin: 'com.google.gms.google-services'

これで設定は完了したので使ってみます。画面は、デフォルトのTextViewが1個あるプロジェクトにボタンを1個追加。処理としては、ボタンクリックで設定を取得・フェッチしテキストを更新しているだけです。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.remoteconfig1.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text1"
        android:text="Hello World!" />

    <Button
        android:text="Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/button1" />
</RelativeLayout>

MainActivity

public class MainActivity extends AppCompatActivity {

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

        // インスタンス取得&デフォルトの値設定
        remoteConfig = FirebaseRemoteConfig.getInstance();
        remoteConfig.setDefaults(R.xml.remote_config_defaults);

        TextView text = (TextView) findViewById(R.id.text1);
        String s = remoteConfig.getString("message");
        text.setText(s);
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                update();
            }
        });
    }

    private void update() {
        remoteConfig.fetch(60)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            // Config更新
                            remoteConfig.activateFetched();

                            // メッセージ更新
                            TextView text = (TextView) findViewById(R.id.text1);
                            text.setText(remoteConfig.getString("message"));
                        }
                    }
                });
    }
}

という感じで、さくっとサンプル完成。

Comments are closed.

Post Navigation