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