2016-07-28 112 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服務器。一位用戶報告,每小時限制爲五個請求。我沒有發現任何地方記錄的限制,儘管我已經確認五次快速提取將激活限制。

配置值的高速緩存在the documentation中進行了說明。由於限制限制,您發佈的應用無法立即看到遠程配置值中的更改。緩存值將被使用,直到下一次獲取被允許。默認緩存過期時間爲12小時。