¿Hay una manera de reproducir una nota de sonido en una sola oreja de auriculares en Swift 2.0 usando AVFoundation?

He creado un juego (Swift 2.0, iOS9) en el que se reproduce una música de background continuamente y se reproducen varios otros sonidos según la interacción del usuario.

Pero ahora, me gustaría reproducir un cierto sonido solo en el auricular derecho o izquierdo, si el reproductor usa auriculares. ¿Es posible usar AVFoundation?

Cualquier ayuda o consejo es muy apreciada.

Así es como reproducirías un sonido a la izquierda o a la derecha.

import UIKit import AVFoundation class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. testSound() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } var audioPlayer = AVAudioPlayer() let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("CheckoutScannerBeep", ofType: "mp3")!) // If sound not in an assest //let alertSound = NSDataAsset(name: "CheckoutScannerBeep") // If sound is in an Asset func testSound(){ do { // audioPlayer = try AVAudioPlayer(data: (alertSound!.data), fileTypeHint: AVFileTypeMPEGLayer3) //If in asset audioPlayer = try AVAudioPlayer(contentsOfURL: alertSound) //If not in asset audioPlayer.pan = -1.0 //left headphone //audioPlayer.pan = 1.0 // right headphone audioPlayer.prepareToPlay() // make sure to add this line so audio will play audioPlayer.play() } catch { print("error") } } } 

Puede comprobar si el audio se reproduce a través de los auriculares antes de reproducir ese sonido con esta function

 func headsetPluggedIn() -> Bool { let route = AVAudioSession.shanetworkingInstance().currentRoute return (route.outputs ).filter({ $0.portType == AVAudioSessionPortHeadphones }).count > 0 } 

Y puede cambiar el audio a la oreja izquierda o derecha con la propiedad de pan de AVAudioPlayer como esta

 myAudioPlayer.pan = 1 

configúrelo en -1 para la oreja izquierda o 1 para la oreja derecha