特定のプッシュでタイマーが開始され、アプリが閉じていてもタイマーが継続する機能を追加しようとしています。私のポイントが10で、タイマーが開始したとしましょう。アプリを閉じたら、次回アプリを開いたら、
1-20分前の場合、カウントダウンタイマーが実行されていることが表示されます
2-アプリで20分後に再度起動すると、ポイントが10に追加されます。
さて、これを行うのにどのような種類のタイマーまたはクラスが役立ちますか?
よろしく
特定のプッシュでタイマーが開始され、アプリが閉じていてもタイマーが継続する機能を追加しようとしています。私のポイントが10で、タイマーが開始したとしましょう。アプリを閉じたら、次回アプリを開いたら、
1-20分前の場合、カウントダウンタイマーが実行されていることが表示されます
2-アプリで20分後に再度起動すると、ポイントが10に追加されます。
さて、これを行うのにどのような種類のタイマーまたはクラスが役立ちますか?
よろしく
アプリ終了のデリゲートで時間を NSUserdefaults に保存し、アプリを起動している間にそれを読み返し、その時間を追加します。
NSTimer
アプリがバックグラウンドであっても600秒以上継続せず、残りはアプリを終了します。
あなたはむしろこれを行うことができます:
NSString *prevTimestamp = [NSString stringWithFormat:@"%d",
[[NSDate date] timeIntervalSince1970]];
prevTimestamp
これを に保存NSUserDefaults
し、アプリに戻ったときに、
NSString *nowTimestamp = [NSString stringWithFormat:@"%d",
[[NSDate date] timeIntervalSince1970]];
時差になります[nowTimestamp floatValue] - [prevTimestamp floatValue]
applicationdelegate 内には、次の機能があります。
-(void)applicationDidEnterBackground:(UIApplication *)application;
と
-(void)applicationWillEnterForeground:(UIApplication *)application;
これらの関数から、次のような方法で時間を追跡できます。
-(void)applicationDidEnterBackground:(UIApplication *)application
{
backgroundTime = [[NSDate date] timeIntervalSince1970];
}
-(void)applicationWillEnterForeground:(UIApplication *)application
{
double timetoAppend = [[NSDate Date] timeIntervalSince1970] - backgroundTime];
// from here you need to add the timetoAppend to your own variable
}