Firebase 远程配置 isDeveloperModeEnabled() 已弃用

Posted

技术标签:

【中文标题】Firebase 远程配置 isDeveloperModeEnabled() 已弃用【英文标题】:Firebase Remote Config isDeveloperModeEnabled() is deprecated 【发布时间】:2020-07-28 22:14:19 【问题描述】:

我正在尝试使用 Firebase 的远程配置功能来获得远程配置参数,以便我可以从 Firebase 获取值并在应用程序中使用它。我已经毫无问题地使用它,但在 Firebase 更新后,我收到了以下警告:

为了避免警告,我尝试使用getMinimumFetchIntervalInSeconds() 而不是isDeveloperModeEnabled()

这是我的代码:

final FirebaseRemoteConfig mFirebaseRemopteconfig = FirebaseRemoteConfig.getInstance();
long cachExpiration = 0;
if (mFirebaseRemopteconfig.getInfo().getConfigSettings().isDeveloperModeEnabled()) 
    cachExpiration = 0;

mFirebaseRemopteconfig.fetch(cachExpiration)
    .addOnCompleteListener(new OnCompleteListener<Void>() 
        @Override
        public void onComplete(@NonNull Task<Void> task) 
            if (task.isSuccessful()) 
                final String funct = mFirebaseRemopteconfig.getString("functionn");
                if (getPackageName().compareTo(funct) != 0) 
                    finish();
                
                mFirebaseRemopteconfig.activateFetched();
            
        
    );

知道如何解决这个问题吗?

【问题讨论】:

***.com/questions/56693336/… 【参考方案1】:

关于setMinimumFetchIntervalInSeconds,就是officially said:

请记住,此设置应仅用于开发, 不适用于在生产中运行的应用程序。如果您只是测试您的应用 拥有一个 10 人的小型开发团队,您不太可能达到 每小时服务端配额限制。但是如果你把你的应用程序推到 数千个测试用户的最小获取间隔非常低,您的 应用程序可能会达到此配额。

虽然你可以setMinimumFetchIntervalInSeconds而不是默认值(= 12小时),但是否达到配额完全取决于你,并且可能导致FirebaseRemoteConfigFetchThrottledException

现在,新 API 要求您 setMinimumFetchIntervalInSeconds 更改间隔。是FirebaseRemoteConfigSettings.Builder的方法。所以你必须在setMinimumFetchIntervalInSeconds之后通过builder构建一个FirebaseRemoteConfigSettings对象,然后将setConfigSettingsAsync构建的FirebaseRemoteConfigSettings到你的FirebaseRemoteConfig

这是我自己的实现示例:

if (BuildConfig.DEBUG) 
    cacheExpiration = 0;
 else 
    cacheExpiration = 43200L; // 12 hours same as the default value


FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings
        .Builder()
        .setMinimumFetchIntervalInSeconds(cacheExpiration)
        .build();

config = FirebaseRemoteConfig.getInstance();
config.setConfigSettingsAsync(configSettings);
config.fetch(cacheExpiration).addOnCompleteListener(activity, onCompleteListener);

--------------- 修改 ------------------- --------

给你的建议

检查包名是否相同

您不需要isDeveloperModeEnabled() 或任何间隔设置。只是fetch() 没有任何设置(但有默认设置):

mFirebaseRemopteconfig = FirebaseRemoteConfig.getInstance();
mFirebaseRemopteconfig.fetch()
    .addOnCompleteListener(new OnCompleteListener<Void>() 
        @Override
        public void onComplete(@NonNull Task<Void> task) 
            if (task.isSuccessful()) 
                final String funct = mFirebaseRemopteconfig.getString("functionn");
                if (getPackageName().compareTo(funct) != 0) 
                    finish();
                
                mFirebaseRemopteconfig.activateFetched();
            
        
    );

【讨论】:

请问如何将我的 firebase 中的价值函数带入?你能帮我写下整个代码吗?如果包名与我在firebase中输入的相同,那么代码正在检查,如果不是应用程序将崩溃。我这样做是为了防止人们反向激活我的应用程序 @saalgu 更新了我的答案。

以上是关于Firebase 远程配置 isDeveloperModeEnabled() 已弃用的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Firebase 远程配置不更新值?

如何导出所有 Firebase 远程配置键和值?

iOS 上的 Firebase 远程配置 ArgumentOutOfRangeException

如何从 Android 读取 Firebase 远程配置模板版本?

用户 ID 的 Firebase 远程配置条件

Firebase 远程配置 - 条件参数无法选择“用户属性”