Comment puis-je éviter d'interrompre l'audio en cours de lecture lorsque mon application est lancée?

J'ai une application qui doit utiliser AVAudioSessionCategoryPlayback pour lire le son pendant que l'appareil est verrouillé ou que mon application est en arrière-plan. (C'est une fonction d'alarme.) Donc, j'ai aussi besoin de définir la key "audio" dans ma list UIBackgroundModes.

J'ai mis le code suivant dans mon application:didFinishLaunchingWithOptions: méthode:

 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil]; 

Cependant, je ne veux pas interrompre la musique qui joue déjà sur l'appareil. Lorsque mon application est lancée, Spotify (par exemple) provoque l'arrêt de la lecture de musique. Je peux passer à Spotify et appuyer sur Play, et quand je returnne à mon application, il continue à jouer.

Mais c'est très ennuyeux pour l'user – les alarmes ne sont pas la seule chose que mon application fait, et il y a beaucoup de raisons pour qu'elles le lancent qui n'impliquent pas le réglage des alarmes. Je ne pense pas que l'user voudrait jamais que mon application arrête toute autre lecture audio sur l'appareil.

Idéalement, je n'interromprais jamais l' audio en cours de lecture. Je pourrais aussi vivre avec l'arrêt de l'audio quand une alarme est réglée (à quel moment je dois activer ma session audio pour m'assurer que je peux la jouer) mais il semble qu'il n'y a aucun moyen pour moi d'éviter l'arrêt audio lancement de l'application.

Est-il possible de démarrer mon application avec la session audio désactivée ou de la démarrer avec cette option déjà appliquée?

Il s'avère que .prepareForPlayback() sur un AVAudioPlayer dans une méthode init() qui était appelée longtime avant que mon didFinishLaunchingWithOptions: fired.