2016-07-28 5 views
5

開発者モードをfalseに設定して、リリースモードのfirebaseリモート設定をセットアップしようとしています。しかし、キャッシュの有効期限が3000秒(少し短くても、実験的に決まるかもしれません)秒を超えると、データをフェッチできません。それはFirebaseRemoteConfigFetchThrottledExceptionリリースでのFirebaseリモートコンフィグキャッシュの有効期限時間

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); 

あなたは問題が何であるかを説明してくださいもらえますか?

答えて

10

リモート設定は、クライアント側のスロットリングを実装して、バグの多いクライアントまたは悪意のあるクライアントが、高い頻度のフェッチ要求を持つFirebaseサーバを爆破するのを防ぎます。 1人のユーザーが1時間あたり5つの要求があると報告しています。私は5つの急速なフェッチがスロットリングをアクティブにすることを確認していますが、どこに書かれているかわかりません。

構成値のキャッシュについては、the documentationで説明しています。絞り込みの制限のため、リリースされたアプリがRemote Config値の変更をすぐに見ることはできません。キャッシュされた値は、次のフェッチが許可されるまで使用されます。デフォルトのキャッシュ有効期限は12時間です。

関連する問題