beginBackgroundTaskWithExpirationHandler никогда не вызывается

У меня есть приложение, которое воспроизводит звук в фоновом режиме. Я пытаюсь использовать beginBackgroundTaskWithExpirationHandler, чтобы перейти к следующей дорожке, когда текущая дорожка закончена.

Вот код, который вызывается при изменении состояния воспроизведения. Он никогда не регистрирует «вызванный beginBG», даже если другой код в том же методе успешно реализуется в фоновом режиме.

UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [self ffwButtonPressed:ffwButton];
    NSLog(@"beginBG called");
    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
}];

ffwButtonPressedвызывает несколько различных методов для смены дорожки. Когда это будет завершено...

UIApplication *app = [UIApplication sharedApplication];
    if (bgTask != UIBackgroundTaskInvalid) {
        [app endBackgroundTask:bgTask]; 
        bgTask = UIBackgroundTaskInvalid;
        NSLog(@"end bgTask");

Изменить:Декларация

UIBackgroundTaskIdentifier bgTask;

Изменить:В ViewDidLoad

bgTask = 0;
8
задан mnort9 23 July 2012 в 19:18
поделиться