2017-11-30 9 views
0

현재 빌드중인 앱에서 [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 버전과 아이폰 모델을 여러하지만 없음에

  • 테스트 내가 관찰자를 제거하지 오전 확인
  • 더블 및 트리플 근무 어디서나

내가 놓친 거지 대해 어떤 아이디어?

답변

0

카테고리를 변경하면 경로가 변경되지 않으므로 알림을 게시하지 않습니다. 원하는 것은 KVO observecategory 속성입니다.

예를 들어 이어폰을 연결할 때 오디오 경로를 변경하면 경로가 변경됩니다.

+1

나는 본다! AVAudioSessionRouteChangeReasonCategoryChange를 사용하면 범주 변경에 대한 알림을받을 수 있다고 완전히 확신 할 수있었습니다. 나는 카테고리 속성이 KVO를 준수하는지 모르겠다. .. 나는 이것을 해결할 다른 방법을 찾아야 할 것 같다. :) 정말 고마워요! – leaveyourfears