iOS+Swift:为啥音乐不能在 iPad 上播放?
Posted
技术标签:
【中文标题】iOS+Swift:为啥音乐不能在 iPad 上播放?【英文标题】:iOS+Swift: Why is music not played on iPad?iOS+Swift:为什么音乐不能在 iPad 上播放? 【发布时间】:2016-08-16 10:37:06 【问题描述】:我正在开发 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 时,它在用耳机收听时工作。
我的 ios 版本都是 9.3.4,适用于 iPad Air 和 iPhone 4S。
有什么想法吗?这是苹果方面的错误吗?
【问题讨论】:
我会检查播放器上的channelAssignments
以确定正在用于输出的通道。
好的,musicPlayer.channelAssignments
返回 nil,但 musicPlayer.numberOfChannels
返回 1(在 iPhone 4S 和 iPad Air 上)。还有什么想法吗?
我找到了解决方案(cp. answer)。感谢您的帮助!
很高兴你找到它!
我也是 ;-) - 谢谢。
【参考方案1】:
好的,我找到了解决办法。在使用 AVAudioPlayer 播放任何音频之前尝试调用以下代码:
do
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker)
catch let error as NSError
print("ERROR: \(error.description)")
希望这对某人有所帮助。
【讨论】:
以上是关于iOS+Swift:为啥音乐不能在 iPad 上播放?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 iPad 不能渲染“离线”情节而 iPhone 可以?