I am using react-native-firebase https://rnfirebase.io/remote-config/usage to try fetching my values.
Firebase says it has fetched my values because I am receiving this console log:
"Configs were retrieved from the backend and activated."
BUT - when I try to output just the value I can only see the default values if they are set.
I am aware of the way firebase is caching remote config, but I still cant get it to work by setting a custom cache timeout.
I'm not so sure what I could be doing wrong.
Here is my code which executes on app load.
async componentDidMount() {
await remoteConfig()
.setConfigSettings({
minimumFetchInterval: 10,
minimumFetchIntervalMillis: 10000, // 10 secs
fetchTimeMillis: 10000
})
await remoteConfig()
.setDefaults({
min_app_version: 1.17,
test_param: 'disabled'
})
// await remoteConfig().fetch(0);
await remoteConfig().fetchAndActivate(0)
.then(fetchedRemotely => {
if (fetchedRemotely) {
console.log(
'+++Configs were retrieved from the backend and activated.',
);
console.log(fetchedRemotely);
} else {
console.log(
'+++++No configs were fetched from the backend, and the local configs were already activated',
);
}
});
//Code to get All parameters from Firebase Remote config
//ONLY default values show here if they are set
const parameters = remoteConfig().getAll();
Object.entries(parameters).forEach($ => {
const [key, entry] = $;
console.log('--Key: ', key);
console.log('--Source: ', entry.getSource());
console.log('--Value: ', entry.asString());
console.log('--------------------------------');
});
const minAppVersion = remoteConfig().getValue('min_app_version');
const isApplicationOn = remoteConfig().getBoolean('is_application_on');
//set value in redux (local storage)
this.props.minAppVersionFirebaseRemoteConfig(minAppVersion._value)
console.log(minAppVersion)
console.log(isApplicationOn)
}
The issue was my google plist file from firebase was not copying over properly in my xCode build phase script so things were not entirely in sync.
For example, I used this to copy the right file over. I was using an if/else condition before that was not working, so I changed to a switch sdtatement and its fine now.
I fixed this by using case/switch instead of if/else...
case "${CONFIGURATION}" in
"Release" )
echo "BUILD CONFIG: RELEASE"
cp -r "${RELEASE_INFO_PLIST_FILE}" "${PLIST_DESTINATION}" ;;
"dev.release" )
echo "BUILD CONFIG: RELEASE DEV"
cp -r "${RELEASE_INFO_PLIST_FILE}" "${PLIST_DESTINATION}" ;;
"Debug" )
echo "BUILD CONFIG: DEBUG"
cp -r "${DEBUG_INFO_PLIST_FILE}" "${PLIST_DESTINATION}" ;;
"dev.debug" )
echo "BUILD CONFIG: DEBUG DEV"
cp -r "${DEBUG_INFO_PLIST_FILE}" "${PLIST_DESTINATION}" ;;
*)
I really don't know why the if/else was not working, but, I hope this helps someone!