Android Firebase Remote Config 시도

14629 단어 FirebaseAndroid

Firebase Remote Config 개요


Firebase의 기능 중 하나로 Firebase 컨트롤러에서 값을 조작하여 응용 프로그램에 간단하게 반영할 수 있다.
boolean, String, Long형에서 키를 지정하고value의 간단한 구조를 받아들입니다.
무료로 사용할 수 있습니다.
※ 작성하는 도중에 이쪽 기사Firebase Remote Config for Android의 핵심 요소가 공개되고 내용이 끼워졌지만 아쉽게도 공개가 되었습니다...

사용 방법


지금 참조 견본 구현
Firebase의 기초는 내장된 전제 조건이다.
gradle dependencies에 추가
build.gradle
    compile 'com.google.firebase:firebase-config:9.0.2'
다음은fab에 따라remoteConfig의 값을 출력하고,button에 따라remoteConfig의 값을 업데이트하는 간단한 예입니다.
    FirebaseRemoteConfig mFirebaseRemoteConfig;

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

        //instance取得
        mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

        //デベロッパーモード指定
        FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
                .setDeveloperModeEnabled(BuildConfig.DEBUG)
                .build();
        mFirebaseRemoteConfig.setConfigSettings(configSettings);

        //デフォルトの値を読み込む
        mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, mFirebaseRemoteConfig.getString("test_string"), Snackbar.LENGTH_LONG).setAction("Action", null).show();
            }
        });

        Button button = (Button) findViewById(R.id.fetch_button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //更新
                fetch();
            }
        });

    }

    private void fetch() {
        int cacheTime = mFirebaseRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled() ? 0 : 60 * 60;// Cache時間設定(秒)
        mFirebaseRemoteConfig.fetch(cacheTime)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            //値を反映
                            mFirebaseRemoteConfig.activateFetched();
                        } else {
                            //fetch失敗
                        }
                    }
                });
    }


remote_config_defaults.xml
<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
    <entry>
        <key>test_string</key>
        <value>文字列だよ</value>
    </entry>
    <entry>
        <key>test_bool</key>
        <value>false</value>
    </entry>
    <entry>
        <key>test_long</key>
        <value>100</value>
    </entry>
</defaultsMap>


값 읽어들이기


설정된 값은 이런 느낌으로 간단하게 얻을 수 있다.
실행 중, 컨트롤러에서 getBoolean 키에 문자열과 숫자를 지정하면false를 되돌려주고, 컨트롤러에서 getLong 키에 문자열을 넣으면 0을 되돌려줍니다.
 mFirebaseRemoteConfig.getString("test_string");
 mFirebaseRemoteConfig.getBoolean("test_bool");
 mFirebaseRemoteConfig.getLong("test_long");
두 번째 파라미터를 넣을 수 있지만 사용법을 몰라요.mFirebaseRemoteConfig.getString("test_string","name_space");

값 설정 (콘솔)


Firebase 컨트롤러에 값을 설정합니다.

값은 조건에 따라 조건을 생성할 수 있습니다.

조건 적응

개발상 모드


예시 주석의 일반 요청은 시간당 5개의 요청 제한이 있는 것 같습니다.
개발상 모델이라면 상한선이 늘어날 것 같다
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
                .setDeveloperModeEnabled(BuildConfig.DEBUG)
                .build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);

업데이트 값


스스로 업데이트하지 않으면 컨트롤러에 설정된 값이 반영되지 않습니다.
fetch의 제한이 있기 때문에 적당한 시기에 실행해야 합니다.
    mFirebaseRemoteConfig.fetch(cacheTime).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
         public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                //値を反映
                mFirebaseRemoteConfig.activateFetched();
            } else {
                //fetch失敗
            }
        }
    });

기본값 가져오기


지도에서도 가능하지만 xml 설정 방법도 있습니다.
mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

잡감

  • 나는 네가 자동fetch를 할 줄 알았지만, 네가 직접fetch, activateFetched를 하지 않으면 반영되지 않을 것이다
  • UI의 색상을 바꾸는 등 AB 테스트 등을 한다는 안내가 있어 이런 기능이 있다고 생각하지만 값만 받고 설치해야 함→설치가 잘못되면 떨어질 수 있음
  • 분석과 연동하면 사용자의 속성(지역, 설비, 언어, 활동)률 등을 간단하게 설정할 수 있고 변경값은 AB테스트를 하는 것이 가장 편리하다.반대로 분석을 넣지 않았으면 좋았을 텐데...
  • 좋은 웹페이지 즐겨찾기