美文网首页js css html
Firebase远程参数配置a/b测试

Firebase远程参数配置a/b测试

作者: 河马过河 | 来源:发表于2019-08-09 10:53 被阅读0次

1、在项目已经引入firebase的情况下增加远程参数功能(项目版本为非AndroidX)

implementation 'com.google.firebase:firebase-config:16.0.0'

public class FirebaseRemoteUtils {
    private static final String TAG = FirebaseRemoteUtils.class.getSimpleName();
    private static final String FIREBASE_REMOTE_CONFIG_PARA = "subsingle";//firebase控制台配置的参数名
    public static void initFireBaseRemoteConfig(Activity activity) {
        FirebaseRemoteConfig    firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
        firebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);//设置默认值
        FirebaseRemoteConfigSettings.Builder builder = new FirebaseRemoteConfigSettings.Builder();
        FirebaseRemoteConfigSettings firebaseRemoteConfigSettings = builder.setDeveloperModeEnabled(BuildConfig.DEBUG).build();
        int cachTime = 3600;
        if (firebaseRemoteConfigSettings.isDeveloperModeEnabled()) {
            cachTime = 0;
        }
        firebaseRemoteConfig.setConfigSettings(firebaseRemoteConfigSettings);
        EdLog.e(TAG, "--222-" + firebaseRemoteConfig.getString(FIREBASE_REMOTE_CONFIG_PARA));
        firebaseRemoteConfig.fetch(cachTime).addOnCompleteListener(activity, new OnCompleteListener<Void>() {
               @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    EdLog.e(TAG, "获取远程firebase参数成功");
                    firebaseRemoteConfig.activateFetched();
                } else {
                    EdLog.e(TAG, "获取远程firebase参数失败");
                }
                EdLog.e(TAG, "--444-" + firebaseRemoteConfig.getString(FIREBASE_REMOTE_CONFIG_PARA));
                Prefs.putPref(activity, FIREBASE_REMOTE_CONFIG_PARA, firebaseRemoteConfig.getString(FIREBASE_REMOTE_CONFIG_PARA));
            }
        });
    }
     public static boolean getFirebaseRemoteSubSingle(Context context) {
        String result = Prefs.getPref(context, FIREBASE_REMOTE_CONFIG_PARA);
        if(TextUtils.isEmpty(result)){
            return true;
        }
        return TextUtils.equals("new", result);//firebase控制台配置参数对应的value值

    }
}

2、在项目已经引入firebase的情况下增加远程参数功能(项目版本为AndroidX)

https://github.com/firebase/quickstart-android/blob/master/config/app/src/main/java/com/google/samples/quickstart/config/java/MainActivity.java

implementation 'com.google.firebase:firebase-config:18.0.0'

public class FirebaseRemoteUtils {
    private static final String TAG = FirebaseRemoteUtils.class.getSimpleName();
    private static final String FIREBASE_REMOTE_CONFIG_PARA = "subsingle";//firebase控制台配置的参数名
    public static void initFireBaseRemoteConfig(Activity activity) {
        FirebaseRemoteConfig    firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
        firebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);//设置默认值
        FirebaseRemoteConfigSettings.Builder builder = new FirebaseRemoteConfigSettings.Builder();
      FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
                .setDeveloperModeEnabled(BuildConfig.DEBUG)
                .setMinimumFetchIntervalInSeconds(3600)
                .build();
        firebaseRemoteConfig.setConfigSettings(configSettings);
        EdLog.e(TAG, "--222-" + firebaseRemoteConfig.getString(FIREBASE_REMOTE_CONFIG_PARA));
        firebaseRemoteConfig.fetchAndActivate().addOnCompleteListener(activity, new OnCompleteListener<Void>() {
               @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    EdLog.e(TAG, "获取远程firebase参数成功");
                    firebaseRemoteConfig.activateFetched();
                } else {
                    EdLog.e(TAG, "获取远程firebase参数失败");
                }
                EdLog.e(TAG, "--444-" + firebaseRemoteConfig.getString(FIREBASE_REMOTE_CONFIG_PARA));
                Prefs.putPref(activity, FIREBASE_REMOTE_CONFIG_PARA, firebaseRemoteConfig.getString(FIREBASE_REMOTE_CONFIG_PARA));
            }
        });
    }
     public static boolean getFirebaseRemoteSubSingle(Context context) {
        String result = Prefs.getPref(context, FIREBASE_REMOTE_CONFIG_PARA);
        if(TextUtils.isEmpty(result)){
            return true;
        }
        return TextUtils.equals("new", result);//firebase控制台配置参数对应的value值

    }
}

3、res/xml 下的remote_config_defaults文件

<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
    <entry>
        <key>subsingle</key>
        <value>new</value>
    </entry>
</defaultsMap>

相关文章

网友评论

    本文标题:Firebase远程参数配置a/b测试

    本文链接:https://www.haomeiwen.com/subject/dnjcjctx.html