我正在尝试实现调用 Firebase 远程配置fetch()
中的方法onStart()
。我以为这会很容易,但经过几次尝试后却发现并非如此。
首先,我想尽快检查新的配置值用户打开应用程序 and 超出缓存过期时间。这就是我选择的原因onStart()
方法来做到这一点。
起初我使用标准方法:
//called in Activity onStart() method
public static void fetchRemoteConfigValues(Activity activity) {
long cacheExpirationInSeconds = 43200L;
firebaseRemoteConfig.fetch(cacheExpirationInSeconds)
.addOnSuccessListener(activity, new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
LOGD(TAG, "onSuccess: Fetch Succeeded");
FirebaseRemoteConfig.getInstance().activateFetched();
}
})
.addOnFailureListener(activity, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
LOGE(TAG, "onFailure: Fetch Failed", e);
}
});
}
一切都会正常工作,除了存在超过缓存过期时间并且没有互联网连接的情况,因此onFailure
叫做。现在我的问题是:
- 为什么此失败请求会增加油门计数器?
在没有互联网的情况下进行几次 fetch() 调用后FirebaseRemoteConfigFetchException
上交FirebaseRemoteConfigFetchThrottledException
。现在,即使互联网再次可用,由于油门限制,我也无法从服务器获取数据。
我的临时解决方法是在调用 fetch() 之前检查互联网可用性:
public static void fetchRemoteConfigValues(Activity activity) {
if (NetworkHelper.isNetworkAvailable(activity))
long cacheExpirationInSeconds = 43200L;
firebaseRemoteConfig.fetch(cacheExpirationInSeconds)
(...)
}
}
但是,当建立连接但仍然没有互联网/服务器没有响应时,可能会导致一些问题。
- 对于我的问题有更好的解决方案/方法吗?