web-dev-qa-db-ja.com

iOS 7でNSTimerを180秒を超えてバックグラウンドで実行する方法

私はこれを試しましたが、iOS 7とXcode 4.6.2では180秒以上動作しません。私を助けてください

    UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
        UIApplication *app = [UIApplication sharedApplication];
       bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
            [app endBackgroundTask:bgTask];
        }];
        NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:20 target:self   selector:@selector(timerMethod) userInfo:nil repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
     -(void) timerMethod{

     NSLog(@"in timerMethod");
    }
10
Deepak Gupta

Background modesのいずれかを有効にしない限り、機能しません。

どうして?

  • この後、タイマーがiosによって停止されると、約10分のバックグラウンド実行があります。

  • IOSがフォアグラウンドアプリを一時停止し、bgTaskが再び起動しないため、アプリがロックされた後はタイマーは起動しません(iOS7)。

いくつかの回避策があります。以下の質問を確認することを検討してください:

iphone-バックグラウンドのNSTimers

アプリがバックグラウンドにあるときにスケジュールされたNSTimer?

背景のNSTimer IS動作中

11
null