Я работаю над приложением iOS, которое должно воспроизводить некоторые звуки с использованием рамки AVFoundation
. Структура рабочей области в Xcode 4 содержит два проекта:
- Workspace
- Само приложение (основной проект)
- Библиотека утилиты
После создания библиотеки утилиты она создает статическую библиотеку, которая используется в основном приложении как фреймворк.
Таким образом, при попытке воспроизвести звук внутри основного приложения, используя приведенный ниже код, он работает так, как ожидалось.
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *path = [NSString stringWithFormat:@"%@/sound.mp3", resourcePath];
NSURL *url = [NSURL fileURLWithPath:path];
NSError *error = nil;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url
error:&error];
[audioPlayer play];
Напротив, при попытке воспроизвести точно такой же звук (или любой другой) внутри библиотеки утилиты, используя тот же код, что и выше, звук вообще не воспроизводится, даже если ошибка равна нулю, а значения свойств аудиоплеера являются правильными (количество каналов, продолжительность).
Я убедился, что структура AVFoundation
находится в обоих проектах.
Кроме того, мой класс использует протокол AVAudioPlayerDelegate
и реализует эти два метода:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error;
Ни один из этих методов не вызван после попытки воспроизведения звука.
Если я использую структуру AudioToolbox
вместо этого, тогда он воспроизводит звук. Но я заинтересован в использовании AVFoundation
по нескольким причинам.
Любая идея о том, что происходит? Я что-то пропустил о AVFoundation
? Может ли это быть связано с использованием AVAudioPlayer
изнутри статической библиотеки?
Спасибо заранее.