iOS+ swift : Why is music not played on iPad?

标签 ios swift sprite-kit swift2 avaudioplayer

我正在开发 SpriteKit 游戏并尝试播放循环音乐文件。这是我的代码:

var musicPlayer = AVAudioPlayer()

override func didMoveToView(view: SKView) {
    self.playBackgroundMusic("gravity")
}

private func playBackgroundMusic(filename: String) {
    do {
        let url = NSBundle.mainBundle().URLForResource(filename, withExtension: "m4a")
        print(url)
        self.musicPlayer = try AVAudioPlayer(contentsOfURL: url!)
        self.musicPlayer.numberOfLoops = -1
        self.musicPlayer.prepareToPlay()
        self.musicPlayer.play()
    } catch let error as NSError {
        print("ERROR: \(error.description)")
    }
}

这在我的 iPhone 4S 上测试时有效,但在 iPad Air 上则不然(只是没有音乐播放,但在 Youtube 等应用程序上运行良好)。奇怪的是,当我将蓝牙耳机连接到 iPad 时,使用耳机收听时它可以工作。

我的 iPad Air 和 iPhone 4S 的 iOS 版本都是 9.3.4。

有什么想法吗?这是苹果方面的错误吗?

最佳答案

好的,我找到了解决办法。在使用 AVAudioPlayer 播放任何音频之前尝试调用以下代码:

do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker)
} catch let error as NSError {
    print("ERROR: \(error.description)")
}

希望这对某人有帮助。

关于iOS+ swift : Why is music not played on iPad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38972683/

相关文章:

Flash iPhone Packer - iAds

ios - ScrollView 不在自动布局中滚动 subview

swift - 父物理主体不起作用

ios - 导航链接仅在 SwiftUI 中有效一次

swift - 标签显示在屏幕顶部而不是在 inputAccessoryView 上

Swift MacOS SpriteKit rightMouseDragged 不起作用

iOS spriteKit 子节点相对于 View 坐标的位置

IOS:UIScrollViewDelegate 不工作

ios - 如何在每个另一个 UILabel 位置下设置几个 UILabel 位置?

ios - UILabel 没有可见接口(interface)声明选择器 objectAtIndex