У меня есть приложение, которое воспроизводит звук в фоновом режиме. Я пытаюсь использовать 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;