Comment puis-je permettre à la musique de fond pour continuer à jouer alors que mon application joue encore ses sons lors de l'utilisation de Swift
J'ai créé une application et que je tente de permettre à l'utilisateur de continuer à écouter de la musique tout en jouant mon jeu, mais à chaque fois ils ont frappé "jouer" et le jeu des sons se produire, il va arrêter la musique de fond. Je suis en développement sur iOS à l'aide de Swift. Voici un morceau de code qui lance le jeu des sons.
func playSpawnedDot() {
var alertSound: NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("spawnDot", ofType: "mp3")!)!
var error:NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
audioPlayer.prepareToPlay()
if volumeBool {
audioPlayer.play()
}
}
Vous devez vous connecter pour publier un commentaire.
Vous devez définir la
AVAudioSession
catégorie, avec l'une des valeurs suivantes: https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/index.html (AVAudioSession Classe de Référence).La valeur par défaut est définie à
AVAudioSessionCategorySoloAmbient
. Comme vous pouvez le lire :Vous devez modifier la catégorie, avant de jouer votre son. Pour ce faire :
Vous n'avez pas besoin d'appeler ceux de la ligne chaque fois que vous jouez le son. Vous pourriez vouloir faire qu'une seule fois.
try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.ambient)
Swift 4 version:
import AVFoundation
setActive
à faux une fois que votre son est terminé de jouer, sinon, la musique de fond esquive restera même après la lecture de la a fini.C'est la façon dont je le fais dans Swift 3.0
Vous pouvez voir plus de AVAudioSessionCategoryOptions ici: https://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions
Voici ce que je suis à l'aide de Swift 2.0:
Veuillez noter que vous pouvez remplacer
.DuckOthers
avec[]
si vous ne voulez pas de baisser la musique de fond et, au lieu de jouer sur le dessus de cela.lchamp la solution a fonctionné parfaitement pour moi, adapté pour Objective-C:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
**
Mis à jour pour Swift 3.0
**
Le nom du son je suis de la lecture est de le briser.wav
Alors si jamais vous voulez jouer le son appel
Si vous voulez jouer un son d'alerte:
Et si vous voulez jouer de la musique:
importation AVFoundation
Pour Swift (Objective-C comme cela trop)
vous pouvez utiliser cette lien pour une meilleure réponse et si vous n'avez pas le temps de regarder 10 minutes, le mieux est que vous venez de
copy
code ci-dessous dans votreAppDelegate
dansdidFinishLaunchingWithOptions
puis sélectionnez votreproject's target
ensuite, allez àCapabilities
et enfin dansBackground modes
vérifier surAudio, AirPlay and Picture in Picture
Je ne pense pas que la seule définition de l'AVAudioSession à AVAudioSessionCategoryOptions.duckOthers pourrait fonctionner, mais il l'a fait. Voici mon code complet pour aider les novices comme moi.
Swift 4 - Exemple Complet:
J'ai encore besoin de trouver des setActive (Je regardais ce post de blog) mais l'audio s'arrête esquive quand je quitte l'application, de sorte qu'il fonctionne pour mon application.
Car elles ne semblent pas décider à partir d'une version à l'autre. Ici, il est en Swift 5.0