iOS 6以降AVAudioSession
のdelegate
プロパティがdeprecatedになったんだけど、その代わりにどうやって設定するのかあんまり情報がなかった。"notification送る"とは書いてあったんだけど、サンプルコードがなかったので、動作確認したコードを載せておく。
各イベントに対応する通知名があるので、それをNSNotificationCenter
に登録しておけばいい。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options
{
AVAudioSession *session = [AVAudioSession sharedInstance];
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(sessionDidInterrupt:) name:AVAudioSessionInterruptionNotification object:nil];
[center addObserver:self selector:@selector(sessionRouteDidChange:) name:AVAudioSessionRouteChangeNotification object:nil];
}
- (void)sessionDidInterrupt:(NSNotification *)notification
{
switch ([notification.userInfo[AVAudioSessionInterruptionTypeKey] intValue]) {
case AVAudioSessionInterruptionTypeBegan:
NSLog(@"Interruption began");
break;
case AVAudioSessionInterruptionTypeEnded:
default:
NSLog(@"Interruption ended");
break;
}
}
- (void)sessionRouteDidChange
{
NSLog(@"%s", __PRETTY_FUNCTION__);
}