9

我正在使用 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
                }

            }
        });
    }

这非常重要,因为没有这个密钥,我的应用程序将无法运行。我需要知道是否可以达到限制异常条件。

你知道限额是怎么计算的吗?

谢谢。

4

2 回答 2

18

为每个应用程序实例维护计数。换句话说,对于运行您的应用程序的每台设备。我通过在一台设备上重复运行类似于您的代码来确认这一点,直到获取状态为 LAST_FETCH_STATUS_THROTTLED。然后我在另一台设备上运行相同的应用程序,成功获取。

当您考虑 FirebaseRemoteConfig 的预期应用程序时,如果应用程序的所有实例的获取都被限制在一个很小的数字(例如 5)内,它就无法工作。

在您的帖子中,您使用了“用户”一词。请注意,FirebaseRemoteConfig 不需要登录用户,也不提供任何基于特定用户 ID 提供配置参数的功能,就像应用版本、设备语言或国家/地区等其他内容一样。

因为您正在考虑使用远程配置“存储密钥”,所以您应该注意文档中的这个警告:

不要将机密数据存储在远程配置参数键或参数值中。可以为您的项目解码存储在远程配置设置中的任何参数键或值。

于 2016-06-20T13:59:04.217 回答
5

每个应用程序实例每个设备每小时计算 5 次。如果您清除应用程序的数据,此限制将被重置。您可以从 03:50 秒开始通过 Firebase 远程配置产品经理观看此视频,了解有关此问题的更多信息 - https://www.youtube.com/watch?v=Vn8X-KQsb6w&t=230s

于 2019-06-17T14:20:38.570 回答