開発者モードをfalse
に設定して、Firebaseリモート構成をリリースモードに設定しようとしています。しかし、キャッシュの有効期限が3000秒(少し短いかもしれませんが、実験的に判断すると)秒未満の場合、データのフェッチに失敗します。 FirebaseRemoteConfigFetchThrottledException
をスローします
_FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(false)
.build();
_
.setDeveloperModeEnabled(true)
を使用すると、0でもいつでも設定でき、うまく機能します。
ここに全体の塊があります:
_new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(false)
.build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);
mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);
mFirebaseRemoteConfig.fetch(CACHE_EXPIRATION)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.i("info32", "remote config succeeded");
mFirebaseRemoteConfig.activateFetched();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Log.i("info32", "remote config failed");
}
});
}
}, 0);
_
問題は何ですか?
Remote Configはクライアント側のスロットリングを実装して、バグのあるクライアントや悪意のあるクライアントが高頻度のフェッチリクエストでFirebaseサーバーを爆破するのを防ぎます。 1人のユーザーが、制限は1時間あたり5つのリクエストであると報告しています。 5つの高速フェッチがスロットルをアクティブにすることを確認しましたが、どこにも記載されている制限は見つかりませんでした。
設定値のキャッシュについては ドキュメント で説明しています。スロットル制限のため、リリースされたアプリがRemote Config値の変更をすぐに確認することはできません。キャッシュされた値は、次のフェッチが許可されるまで使用されます。デフォルトのキャッシュの有効期限は12時間です。