当我尝试在我的计时器应用中播放声音时,我在代码中使用AVFoundation
。虽然我能够在模拟器中听到声音,但不能在设备中听到声音。我想知道我是否需要为应用程序设置一些在设备中播放声音的内容?
请查看以下代码以获取更多信息。
import AVFoundation
class timer {
var player: AVAudioPlayer = AVAudioPlayer()
// in viewdidload
let squishPath = NSBundle.mainBundle().pathForResource("ding", ofType: "wav")
let squishURL = NSURL(fileURLWithPath: squishPath!)
do {
try squishPlayer = AVAudioPlayer(contentsOfURL: squishURL)
squishPlayer.prepareToPlay()
} catch let err as NSError {
print(err.debugDescription)
}
squishPlayer.numberOfLoops = 0
}
我检查了文件名的确切位置,并且它位于复制退回资源中。
我发现解决方案是将以下内容添加到app delegate。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryPlayback)
try session.setActive(true)
} catch let error as NSError {
print("AVAudioSession configuration error: \(error.localizedDescription)")
}
return true
}
这解决了设备上没有声音的问题,但奇怪的是即使我没有将这些添加到app delegate,模拟器中仍有声音。