Search code examples
androidfirebasefirebase-remote-config

Unable to fetch RemoteConfig data from Firebase


I have a class to fetch Firebase remote config data where two values in my remote config. But unfortunately, I can't able to fetch data.

public class FirebaseConfig {
    FirebaseRemoteConfig mFirebaseRemoteConfig;
    FirebaseRemoteConfigSettings configSettings;
    long cacheExpiration = 5;
    String vehicle_latitude = "";
    String vehicle_longitude = "";

    public FirebaseConfig() {
        mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
        configSettings = new FirebaseRemoteConfigSettings.Builder()
                .build();
        mFirebaseRemoteConfig.setConfigSettings(configSettings);
        mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);
    }

    public String fetchLatitude(Context context) {
        mFirebaseRemoteConfig.fetch(getCacheExpiration())
                .addOnCompleteListener((Activity) context, new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
// If is successful, activated fetched
                        if (task.isSuccessful()) {
                            mFirebaseRemoteConfig.activateFetched();
                        } else {
                            Log.d("", "");
                        }
                        vehicle_latitude = mFirebaseRemoteConfig.getString("tracker_vehicle_latitude");
                    }
                });
        return vehicle_latitude;
    }

    public String fetchLongitude(Context context) {
        mFirebaseRemoteConfig.fetch(getCacheExpiration())
                .addOnCompleteListener((Activity) context, new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
// If is successful, activated fetched
                        if (task.isSuccessful()) {
                            mFirebaseRemoteConfig.activateFetched();
                        } else {
                            Log.d("", "");
                        }
                        vehicle_longitude = mFirebaseRemoteConfig.getString("tracker_vehicle_longitude");
                    }
                });
        return vehicle_longitude;
    }

    public long getCacheExpiration() {
// If is developer mode, cache expiration set to 0, in order to test
        if (mFirebaseRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()) {
            cacheExpiration = 0;
        }
        return cacheExpiration;
    }}

When I call this from another class, I am unable to fetch data from firebase.

In MainActivity

   FirebaseConfig fc = new FirebaseConfig();
            vehicle_latitude = fc.fetchLatitude(this);
            vehicle_longitude = fc.fetchLongitude(this);

Any suggestions will be appreciated.

Thank you!


Solution

  • Try fetching this way

    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
            .setMinimumFetchIntervalInSeconds(10)
            .build();
    mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);
    
    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
    
    mFirebaseRemoteConfig.fetchAndActivate();
    
    vehicle_latitude = mFirebaseRemoteConfig.getString("tracker_vehicle_latitude");
    vehicle_longitude = mFirebaseRemoteConfig.getString("tracker_vehicle_longitude");
    

    For more information on how to set-up, check this