我正在使用Firebase远程配置为移动应用程序存储密钥(由于安全问题,我不想包含在客户端应用程序中)。
问题是我知道在很短的时间内从服务器多次获取配置会引发一个限制异常。在生产应用程序中,每小时限制为5个请求,但我不知道此限制是按用户还是全局计算。
这是我的代码:
//first search cached result, if present
String key = FirebaseRemoteConfig.getInstance().getString("key");
if(key != null && !key.isEmpty()){
setKeyAndGoHome(key);
}else {
//no key present, let's fetch it from config
FirebaseRemoteConfig.getInstance().fetch().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
FirebaseRemoteConfig.getInstance().activateFetched();
//key is cached 12 hours
String key = FirebaseRemoteConfig.getInstance().getString("key");
setKeyAndGoHome(key);
} else {
//this can happen due to a throttling exception
}
}
});
}
这非常重要,因为如果没有此密钥,我的应用程序就无法运行。我需要知道是否可以达到限制异常条件。
你知道怎么计算限额吗?
感谢。
答案 0 :(得分:9)
为每个应用实例维护计数。换句话说,对于您的应用运行的每个设备。我通过在一台设备上重复运行与您类似的代码来确认这一点,直到获取状态为LAST_FETCH_STATUS_THROTTLED。然后我在不同的设备上运行相同的应用程序,该应用程序已成功获取。
当您考虑FirebaseRemoteConfig的预期应用程序时,如果应用程序的所有实例的提取仅限于少数,例如5,那么它就无法工作。
在您的帖子中,您使用了术语&#34; user&#34;。请注意,FirebaseRemoteConfig不需要登录用户,也不提供任何基于特定用户ID提供配置参数的功能,就像应用程序版本,设备语言或国家/地区一样。
因为您正在考虑使用远程配置&#34;存储密钥&#34;,您应该在documentation中了解此警告:
不要将机密数据存储在Remote Config参数键或 参数值。可以解码任何参数键或 存储在项目的远程配置设置中的值。
答案 1 :(得分:0)
每个应用程序每个实例每小时每个设备5次。如果您清除了应用数据,此限制将被重置。您可以从03:50秒开始通过Firebase远程配置产品管理器观看此视频,以获取有关此问题的更多信息-https://www.youtube.com/watch?v=Vn8X-KQsb6w