현재 빌드중인 앱에서 [AVAudioSession sharedInstance]
님의 현재 카테고리에 따라 몇 가지 사항을 처리해야합니다. 이 범주는 런타임 중에 변경되며 NotificationCenter에서 AVAudioSessionRouteChangeNotification
을 관찰하여 변경 사항을 추적하려고합니다.AVAudioSession이 알림을 실행하지 않음을 관찰하십시오.
그러나 아무리 알림을 시도해도 아무런 문제가 발생하지 않거나 적어도 선택기 방법으로 아무 것도 수신되지 않습니다.
일부 테스트 샘플 코드;
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionRouteDidChange:) name:AVAudioSessionRouteChangeNotification object:nil];
return YES;
}
- (void)sessionRouteDidChange:(NSNotification *)notification
{
NSLog(@"SESSION ROUTE CHANGED");
}
ViewController.m
- (void)changeAudioCategory:(AVAudioSessionCategory)category{
[[AVAudioSession sharedInstance] setActive:NO error:nil];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
BOOL success = [audioSession setCategory:category error:&setCategoryError];
if (!success) {
NSLog(@"ERROR");
}
[audioSession setActive:YES error:nil];
/* Logging the current category */
NSLog(@"AVAUDIOSESSION CATEGORY %@", audioSession.category);
}
내가 카테고리 변경에 sessionRouteDidChange
에 통지를 보내도록 내가 AppDelegate
에서 설정 한 관찰자를 기대하고있다 이 메서드 내부에서는 아무 일도 일어나지 않습니다.
내가 시도한 것; 아이폰 OS 버전과 아이폰 모델을 여러하지만 없음에
- 테스트 내가 관찰자를 제거하지 오전 확인
- 더블 및 트리플 근무 어디서나
내가 놓친 거지 대해 어떤 아이디어?
나는 본다! AVAudioSessionRouteChangeReasonCategoryChange를 사용하면 범주 변경에 대한 알림을받을 수 있다고 완전히 확신 할 수있었습니다. 나는 카테고리 속성이 KVO를 준수하는지 모르겠다. .. 나는 이것을 해결할 다른 방법을 찾아야 할 것 같다. :) 정말 고마워요! – leaveyourfears