2016-08-28 1 views
-1

と呼ば取得し続け -AVAudioSessionRouteChangeNotificationは私がルート変更についての情報を取得するためにAVAudioSessionを使用してい

AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
    // close down our current session 
    [audioSession setActive:NO error:nil]; 

通知がまだ呼ば取得 -

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(currentRouteChanged:) 
               name:AVAudioSessionRouteChangeNotification object:nil]; 

問題は、現在のセッションを閉じた後ということです。

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

は召しを停止するが、それは右に記入していません -

は現在、私は使用しています。セッションがない場合、この通知はどうやって呼び出されますか?

[audioSession setActive:NO error:nil]; 

と呼ばれ得ることから、この通知を取得します -

は「強い」オーディオセッションを殺すための方法の代わりに、ありますか?

おかげ

答えて

2

何のセッション

が存在しない場合は、オーディオセッションが常にあります。これは、アプリケーションと同じように共有シングルトンであるか、通知センターまたはユーザーのデフォルトです。その存在は、その活性化とは関係ありません。オーディオセッションは、アプリが起動してから殺された瞬間まで存在します。 docsが言うように:起動時に

、あなたのアプリが自動的に

シングルトンオーディオセッションを取得し、「現在のセッションを閉じる」のようなものはありません。それはちょうどあなたの頭の中で構成しているナンセンスのアイデアです。

ご希望の不要な通知の登録を解除することをお勧めします。それを行う。また、到着時には無視してください。くよくよせずに楽しくやろうぜ。

+1

少し納得がいくけど良いと思いますが、あなたの答えに感謝します。 また、私はそれが事実だと思って、ちょうどセッションをアクティブにしないで通知に登録しようとしました、そして、通知はルートを変更するときに呼ばれませんでした。 あなたはその理由を知っていますか? – ozd

+0

これは混乱の問題ではありません。あなたは、オーディオセッションを「閉じる」「殺す」というあなたの話で示されるように、非常に重要な問題については誤った仮定をしています。私はあなたからそれを説得しようとしています。今でもあなたは説得力があるとは思われませんが、他に何が言えるのか分かりません。 – matt

+0

私は最初のコメントを編集しました。 – ozd

関連する問題