iPhone: зацикливание звука прекращается через 4 минуты

#iphone #nstimer #countdown #audio

#iPhone #nstimer #обратный отсчет #Аудио

Вопрос:

Я создаю таймер обратного отсчета, который воспроизводит звуковой сигнал для каждого второго отсчета через NSTimer. Приложение должно находиться в режиме ожидания не более 90 минут и воспроизводить повторяющийся звуковой сигнал до тех пор, пока таймер не станет недействительным. В списке я выбрал «Приложение UIbackground Modes воспроизводит аудио», а также добавил в delegate.m [UIApplication sharedApplication].idleTimerDisabled = YES; , чтобы сохранить мой таймер на экране. Проблема в том, что через 4 минуты повторяющийся звук прекращается. Все остальное работает, приложение, похоже, проснулось, метка, показывающая обратный отсчет, обновляется сама. Чтобы восстановить звук, вам нужно выйти и повторно запустить приложение. Проблема возникает как в симуляторе, так и в устройстве (iPhone 3G). Я использую xcode 4, если это имеет значение. Вот мой код:

 NSString *path = [[NSBundle mainBundle]
                   pathForResource:@"beep" ofType:@"mp3"];
 AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];
 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
 UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:nil];
 [[UIApplication sharedApplication] endBackgroundTask:bgTask];
 [audioPlayer play];
  

Конечно, я импортировал библиотеки

 #import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
  

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

Ответ №1:

Из опубликованного кода похоже, что вы создаете новый объект AVAudioPlayer каждый раз, когда воспроизводите звук, и не выпускаете его позже. Это приводит к тому, что ваш файл (beep.mp3) остается открытым, и если будет открыто слишком много файлов, у вас закончатся обработчики файлов. Если это так, то вы больше не сможете открывать файлы, что может вызвать тишину, которую вы испытываете.

Если вы выпускаете / повторно используете все правильно, то, вероятно, этого не может быть.

Комментарии:

1. В этом и была проблема! Большое вам спасибо!