Apple не опубликовала альтернативный код для этого на сайте Apple Developer.
Исправление для AudioSessionInitialize устарело?
Ответ 1
Вы должны использовать AVAudioSession.
Чтобы заменить функциональность, предоставляемую устаревшим AudioSessionInitialize (например, если вам нужно указать обратный вызов AudioSessionInterruptionListener), вы можете подписаться на уведомление AVAudioSessionInterruptionNotification:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioSessionDidChangeInterruptionType:)
name:AVAudioSessionInterruptionNotification object:[AVAudioSession sharedInstance]];
И реализуйте свой audioSessionDidChangeInterruptionType: обработчик вроде:
- (void)audioSessionDidChangeInterruptionType:(NSNotification *)notification
{
AVAudioSessionInterruptionType interruptionType = [[[notification userInfo]
objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
if (AVAudioSessionInterruptionTypeBegan == interruptionType)
{
}
else if (AVAudioSessionInterruptionTypeEnded == interruptionType)
{
}
}
Ответ 2
Эквивалентный код
// C way
UInt32 category = kAudioSessionCategory_MediaPlayback ;
OSStatus result = AudioSessionSetProperty(
kAudioSessionProperty_AudioCategory, sizeof(category), &category ) ;
if( result ) // handle the error
Есть
// Objective-C way
NSError *nsError;
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayback error:&nsError];
if( nsError != nil ) // handle the error
Ответ 3
1. для этого кода
AudioSessionInitialize( NULL, NULL, interruptionCallback, self );
заменить
[[AVAudioSession sharedInstance] setActive:YES error:nil];
2. для этого кода
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty(
kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory
);
заменить
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
[[AVAudioSession sharedInstance]
setCategory:sessionCategory error:nil];