私は同様の問題に遭遇しました。残念ながら、RNのCRONアクションに似た何かを指定することはできません。
この問題を解決するには、このライブラリhttps://github.com/ocetnik/react-native-background-timerを使用し、タスクがスケジュールされている現在の時刻と時刻の差を計算します。
算出された時間はミリ秒である必要があり、あなたが提供する機能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);
例:
componentDidMount
に、あなたは16日の明日のためにタスクをスケジュールしたいとしましょうあなた今から予定された日付までの時間を計算できます。のは、そのためのmoment
を使用してみましょう:このソリューションは、彼の電話の時刻を変更するユーザーに対して脆弱であることを
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);
}
注意。完璧なソリューションは、外部サービスを使用して時間を取得することです。
2番目の注意点として、この機能が動作するには、アプリが少なくともバックグラウンドである必要があります。
実行するサービスクラスにこのコードを配置します。 –