Я работаю над приложением для iOS, которое должно воспроизводить некоторые звуки с использованием фреймворка AVFoundation
. Структура рабочего пространства в Xcode 4 содержит два проекта:
- Рабочая область
- Само приложение (основной проект)
- служебная библиотека
После создания библиотеки утилит она создает статическую библиотеку, которая используется в основном приложении в качестве платформы.
Итак, при попытке воспроизвести звук внутри основного приложения с помощью приведенного ниже кода, он работает как положено.
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];
Напротив, при попытке воспроизвести точно такой же звук (или любой другой) внутри библиотеки утилит, используя тот же код, что и выше, звук не воспроизводится вообще, даже если ошибка ноль и audioPlayer значения свойств являются правильными (количество каналов, длительность).
Я убедился, что фреймворк AVFoundation
есть в обоих проектах.
Кроме того, мой класс использует протокол AVAudioPlayerDelegate
и реализует эти два метода:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error;
Ни один из этих методов не вызывается после попытки воспроизведения звука.
Если вместо этого я использую AudioToolbox
framework, он воспроизводит звук. Но я заинтересован в использовании AVFoundation
по нескольким причинам.
Есть идеи о том, что происходит? Я что-то упускаю из-за AVFoundation
? Может ли это быть связано с использованием AVAudioPlayer
внутри статической библиотеки?
Заранее спасибо.