Я занимаюсь разработкой приложения для фонарика.
В этом приложении я хочу воспроизводить звук с помощью AVFoundation.
Когда я запустил приложение, звуковой файл хорошо воспроизводился на симуляторе Xcode. Однако на моем устройстве iPhone звуковой файл не воспроизводился.
Пожалуйста, посмотрите на мои коды.
import UIKit
import AVFoundation
import os.log
class ViewController: UIViewController {
@IBOutlet weak var switchButton: UIButton!
@IBOutlet weak var flashImageView: UIImageView!
var isOn = false
var soundPlayer: AVAudioPlayer?
override func viewDidLoad() {
super.viewDidLoad()
prepareSound()
}
func prepareSound() {
let path = Bundle.main.path(forResource: "switch", ofType:"wav")!
let url = URL(fileURLWithPath: path)
do {
soundPlayer = try AVAudioPlayer(contentsOf: url)
soundPlayer?.prepareToPlay()
} catch {
// couldn't load file :(
}
}
func toggleTorch(on: Bool) {
guard let device = AVCaptureDevice.default(for: .video) else { return }
if device.hasTorch {
do {
try device.lockForConfiguration()
if on == true {
device.torchMode = .on
} else {
device.torchMode = .off
}
device.unlockForConfiguration()
} catch {
print("Torch could not be used")
}
} else {
print("Torch is not available")
}
}
@IBAction func switchTapped(_ sender: Any) {
isOn = !isOn
soundPlayer?.play()
os_log("sound played")
toggleTorch(on: isOn)
flashImageView.image = isOn ? #imageLiteral(resourceName: "onBG") : #imageLiteral(resourceName: "offBG")
switchButton.setImage( isOn ? #imageLiteral(resourceName: "onSwitch") : #imageLiteral(resourceName: "offSwitch"), for: .normal)
}
}