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() 已弃用的主要内容,如果未能解决你的问题,请参考以下文章
iOS 上的 Firebase 远程配置 ArgumentOutOfRangeException