Search code examples
iosswiftxcode6ios-simulator

iOS Simulator does not play sound


On XCode 6, everything works well on device, but on simulator, sound is not played.

There is my swift code :

var url =  NSURL(string: "http://my.url.com/sound.mp3")
var data = NSData(contentsOfURL: url!)
// Removed deprecated use of AVAudioSessionDelegate protocol
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
self.player = AVAudioPlayer(data: data, error: nil)
self.player.prepareToPlay()
self.player.delegate = self
self.player.volume = 1
self.player.play()

There is the log :

ERROR:     98: Error '!obj' trying to fetch default input device's sample rate

ERROR:     100: Error getting audio input device sample rate: '!obj'

WARNING:   230: The input device is 0x0; '(null)'

WARNING:   234: The output device is 0x26; 'AppleHDAEngineOutputDP:3,0,1,1:0:{2D4C-092D-00000000}'

ERROR:     400: error '!obj'

ERROR:     113: * * * NULL AQIONode object

ERROR:     180: EXCEPTION thrown ('!dev'): -

ERROR:     703: Can't make UISound Renderer

ERROR:     >aqsrv> 70: Exception caught in (null) - error -1

ERROR:     180: EXCEPTION thrown ('!dev'): -

ERROR:     >aqsrv> 70: Exception caught in (null) - error -1

Solution

  • The error occurs because you are trying to get device's sample rate from simulator, which is not possible.

    Because simulator is not a hardware. Its a software.

    So some hardware functionality will not able to simulated with it.

    It can not do the following:

    1. Open Camera
    2. Play sounds
    3. Gyrometer
    4. Accelerometer
    5. Shake effect
    6. Receive push notifications

    And many more which required device hardware acceleration.

    You need to test this in real device.