私が現在構築しているアプリでは、[AVAudioSession sharedInstance]
の現在のカテゴリに応じていくつか処理する必要があります。このカテゴリは実行時に変更され、通知センターで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
に設定したオブザーバを期待していますこのメソッドの内部では何も起こりません。
私が試したことは何ですか?複数のiOSバージョンとiPhoneモデルの
- テストが、どれもダブル、トリプルが、私はどこでも
私が行方不明ですかについての任意のアイデアをオブザーバを削除するわけではないことを確認
私は見る! AVAudioSessionRouteChangeReasonCategoryChangeは、私がカテゴリ変更について通知を受けることができると完全に確信しました。私はカテゴリのプロパティがKVOに準拠しているかどうかはわかりません。私はこれを解決する他の方法を見つける必要があると思います:)ありがとうございました! – leaveyourfears