Je suis tombé sur un problème similaire, malheureusement, vous ne pouvez pas spécifier quelque chose de similaire à l'action CRON dans RN.
Ma solution à ce problème est d'utiliser cette bibliothèque https://github.com/ocetnik/react-native-background-timer et de calculer la différence entre l'heure actuelle et l'heure à laquelle la tâche est prévue.
Le temps calculé doit être en ms, de sorte que vous pouvez l'utiliser avec fonction fournie setTimeout
:
// Start a timer that runs once after X milliseconds
const timeoutId = BackgroundTimer.setTimeout(() => {
// this will be executed once after 10 seconds
// even when app is the the background
console.log('tac');
}, 10000);
Exemple:
Disons que vous voulez tâche de planifier pour demain à 16, en componentDidMount
vous peut calculer le temps entre maintenant et la date prévue. Utilisons moment
pour cela:
componentDidMount(){
const scheduledDate =
moment().add(1,'d').set({hour:16,minute:0,second:0,millisecond:0})
const diffTime = scheduledDate.diff(moment())
this.timeoutId = BackgroundTimer.setTimeout(() => {
console.log('tac');
}, diffTime);
}
componentWillUnmount(){
BackgroundTimer.clearTimeout(this.timeoutId);
}
Notez que cette solution est vulnérable à un utilisateur de changer l'heure sur son téléphone. La solution idéale serait d'utiliser un service externe pour gagner du temps. Deuxièmement, l'application doit être au moins en arrière-plan pour que cela fonctionne.
Placez ce code dans votre classe de service que vous souhaitez exécuter en arrière-plan –