2016-08-08 28 views
2

In meiner App habe ich einen Hintergrund-Service, möchte ich meinen Dienst benachrichtigt werden, wenn eine andere App Audio z. Anruf oder eine Musik-App oder Radio-App spielt Audio.Benachrichtigung für Audio-Session-Unterbrechung

Aus der AVAudioSession-Klassendokumentation scheint das ist die Sache, die ich brauche.

So habe ich versucht:

-(void)initialization{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
                selector:@selector(handleAudioSessionInterruption:) 
                 name:AVAudioSessionInterruptionNotification 
                 object:nil]; 
} 

-(void)handleAudioSessionInterruption:(NSNotification*)notification{ 
    NSLog("Get notified for interruption"); 
} 

ich meine App auf dem iPhone laufen. Wenn ich einen ausgehenden/eingehenden Anruf tätige, wird meine App wegen Unterbrechung der Audio-Sitzung benachrichtigt. Es läuft gut!

Aber wenn ich eine Radio/Musik-App öffne, die Audio spielt, wird meine App nicht benachrichtigt. Warum? Wie kann meine App benachrichtigt werden, wenn die Musik/Radio-App Audio abspielt?

Antwort

0

Wie in der Dokumentation erwähnt ::

/* Eingetragene Zuhörer benachrichtigt werden, wenn das System die Audiositzung unterbrochen wird und wenn die Unterbrechung beendet ist. Überprüfen Sie das userInfo-Wörterbuch der Benachrichtigung auf den Unterbrechungstyp - entweder Anfang oder Ende. Überprüfen Sie im Fall einer Benachrichtigung über die Beendigung der Unterbrechung das userInfo-Wörterbuch für AVAudioSessionInterruptionOptions , um anzugeben, ob die Audiowiedergabe fortgesetzt werden soll. */

SO, wenn eine andere App versucht, die Audiositzung zu übernehmen, wird die Unterbrechungsbenachrichtigung gesendet.

Beispiel: Versuchen Sie, die Standard-Musik-App des Apple zu öffnen, oder versuchen Sie, ein Video von der Standard-Kameraanwendung aufzunehmen. Sie übernehmen die Audio-Session und Sie werden darüber informiert.

Nur um auf der sicheren Seite zu sein: Die Instanz, die die Benachrichtigung abhört, sollte noch im Speicher vorhanden sein.