0

皆さんこんにちは、アプリがバックグラウンドにあるときにメソッドを呼び出す必要があります。これは今私がこれを達成しようとしていますが、タイマーが呼び出されることはありません。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIApplication*    app = [UIApplication sharedApplication];

    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];

    // Start the long-running task and return immediately.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        // Do the work associated with the task.
        self.timer = nil;
        [self initTimer];

    });
}

- (void)initTimer {

    DebugLog(@"timer INIT!!!!!");

    if (self.timer == nil) {
        self.timer = [NSTimer scheduledTimerWithTimeInterval:0.3
                                                      target:self
                                                    selector:@selector(checkUpdates:)
                                                    userInfo:nil
                                                     repeats:YES];
    }
}

- (void)checkUpdates:(NSTimer *)timer{
    [UIApplication sharedApplication].applicationIconBadgeNumber++;

    DebugLog(@"timer FIRED!!!!!");
    [self initTimer];
}

checkUpdatesアプリがバックグラウンドにある間、N分または秒ごとにメソッドを呼び出す必要があります。アプリがバックグラウンドinitTimerに入ると呼び出されますが、タイマーは呼び出されないことに注意してください。

4

1 に答える 1

-1

アプリケーションをバックグラウンドで使用する場合、Apple はアプリケーションをバックグラウンドで使用することを許可しません。「UIBackgroundModes」を使用する必要があります。

その後、Appdeligate からこのスレッドを管理できます

チェックする必要があります

http://developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

これがあなたを助けることを願っています

于 2013-05-23T09:19:51.810 に答える