2016-08-16 1 views
0

나는 SpriteKit 게임을 작업 중이며 반복 음악 파일을 재생하려고합니다. 여기에 내 코드입니다 :iOS + Swift : iPad에서 음악이 재생되지 않는 이유는 무엇입니까?

하지만 아이 패드 에어에, 내 아이폰 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)") 
    } 
} 

(단지에는 음악 재생이 없지만 유튜브 등 같은 애플 리케이션과 함께 잘 작동). 이상하게도 블루투스 헤드 폰을 iPad에 연결할 때 헤드 폰으로 청취 할 때 작동합니다.

내 Air OS 버전은 iPad Air 및 iPhone 4S의 경우 모두 9.3.4입니다.

아이디어가 있으십니까? 이것은 Apple 측의 버그입니까?

+0

플레이어에서 'channelAssignments'를 확인하여 어떤 채널이 출력에 사용되는지 확인합니다. – Daniel

+0

좋아요, '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)") 
} 

희망이 누군가를하는 데 도움이됩니다.

관련 문제