我正在尝试在fetch()
中实施调用Firebase远程配置onStart()
方法。我认为这很容易但经过几次尝试后却不是。
首先,我想在用户打开应用并且超出缓存到期时间时检查新的配置值。这就是为什么我选择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);
}
});
}
除非存在超出缓存过期时间并且没有Internet连接以便调用onFailure
的情况,否则一切都会正常工作。现在我的问题是:
在FirebaseRemoteConfigFetchException
内没有互联网FirebaseRemoteConfigFetchThrottledException
的几次fetch()调用之后。现在,即使互联网再次可用,由于节流限制,我也无法从服务器获取数据。
我的临时解决方法是在调用fetch()之前检查Internet可用性:
public static void fetchRemoteConfigValues(Activity activity) {
if (NetworkHelper.isNetworkAvailable(activity))
long cacheExpirationInSeconds = 43200L;
firebaseRemoteConfig.fetch(cacheExpirationInSeconds)
(...)
}
}
但是,当建立连接但仍然没有Internet /没有服务器响应时,它可能会导致一些问题。