如何在onStart()方法中实现Firebase远程配置中的fetch()?

时间:2017-05-20 21:43:52

标签: android firebase throttling firebase-remote-config

我正在尝试在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的情况,否则一切都会正常工作。现在我的问题是:

  1. 为什么此故障请求会增加节流计数器?
  2. FirebaseRemoteConfigFetchException内没有互联网FirebaseRemoteConfigFetchThrottledException的几次fetch()调用之后。现在,即使互联网再次可用,由于节流限制,我也无法从服务器获取数据。

    我的临时解决方法是在调用fetch()之前检查Internet可用性:

    public static void fetchRemoteConfigValues(Activity activity) { 
        if (NetworkHelper.isNetworkAvailable(activity))
            long cacheExpirationInSeconds = 43200L;
            firebaseRemoteConfig.fetch(cacheExpirationInSeconds)
            (...)
        }
    }
    

    但是,当建立连接但仍然没有Internet /没有服务器响应时,它可能会导致一些问题。

    1. 我的问题有更好的解决方案/方法吗?

0 个答案:

没有答案