Я использую Firebase Remote Config для установки цвета иконки. При первой загрузке приложения значение, загружаемое из firebase, равно 0, если после перезагрузки приложения я получаю правильное значение цвета #ffffff. Вы можете видеть результат в консоли XCode на этом снимке экрана:
Вот мой конфигурационный файл remoteConfig:
async getRemoteConfig(t) {
// const { t, i18n } = useTranslation();
if (__DEV__) {
firebase.config().enableDeveloperMode();
console.log('running in dev mode');
}
// Set default values
firebase.config().setDefaults({
share_button_color:'#fff'
});
firebase
.config()
.fetch(0) // call like this fetch(0) to reset cache load new params from firebase,without this it takes 12h
.then(() => {
return firebase.config().activateFetched();
})
.then(async activated => {
if (!activated) console.log('Fetched data not activated');
else console.log('Fetched data activated');
})
// .then(snapshot => {
// const hasExperimentalFeature = snapshot.val();
// if (hasExperimentalFeature) {
// enableSuperCoolFeature();
// }
// // continue booting app
// })
.catch(console.error);
},
};
Также вот мой компонент:
export default class ShareIcon extends Component {
constructor(props) {
super(props);
this.state = {
buttonColor: 'white',
};
}
async componentDidMount() {
await this.getShareButtonColor();
}
async getShareButtonColor() {
const remoteButtonColorData = await firebase
.config()
.getValue('share_button_color');
const buttonColor = remoteButtonColorData.val();
console.log('buttonColor',buttonColor) // <===this is the console.log we see
this.setState({buttonColor}); // in screenshot
}
render() {
return (
<TouchableOpacity
hitSlop={{top: 10, left: 10, bottom: 10, right: 10}}
style={styles.container}
onPress={() => shareApp()}
style={{marginLeft: 20}}>
<Icon name="share-2" type="feather" color={this.state.buttonColor} />
</TouchableOpacity>
);
}
}