2016-08-16 4 views
0

私はSpriteKitゲームで作業中で、ループした音楽ファイルを再生しようとしています。ここに私のコードです:iOS + Swift:iPadで音楽が再生されないのはなぜですか?

ではなく、iPadの空気に、私のiPhone 4S上でテストするときに、この作品
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)") 
    } 
} 

(ちょうどなし音楽演奏ありませんが、YouTubeのなどのようなアプリで正常に動作します)。奇妙なことに、BluetoothヘッドフォンをiPadに接続すると、ヘッドフォンで聴くときに機能します。

私のiOSバージョンは、iPad AirとiPhone 4Sの両方で9.3.4です。

アイデア?これはApple側のバグですか?

+0

私はプレーヤーの 'channelAssignments'をチェックして、どのチャンネルが出力に使用されているのか判断します。 – Daniel

+0

OK、 'musicPlayer.channelAssignments'はnilを返しますが、' musicPlayer.numberOfChannels'は1を返します(iPhone 4SとiPad Airの場合)。その他のアイデアは? – salocinx

+0

私は解決策(cp。答え)を見つけました。ご協力ありがとうございました! – salocinx

答えて

0

いいえ修正が見つかりました。 AVAudioPlayerでオーディオを再生する前に、次のコードを呼び出してみてください。

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

これは誰かに役立つことを望みます。

関連する問題