
问题代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
class CallManager: NSObject { static let shared = CallManager() ... func ring() { //响铃 let audio = AVAudioSession.sharedInstance() do { try audio.setCategory(.ambient) try audio.setActive(true) guard let file = Bundle.main.path(forResource: "shake_sound.mp3", ofType: nil) else { return } let url = URL(string: file) let player = try? AVAudioPlayer(contentsOf: url!) player?.volume = 1 player?.prepareToPlay() player?.play() } catch { print(error) } } }
|
解决方案:
把player的定义从函数中提出来,定义成全局变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class CallManager: NSObject { static let shared = CallManager() ... var player:AVAudioPlayer? = nil func ring() { //响铃 let audio = AVAudioSession.sharedInstance() do { ... player = try? AVAudioPlayer(contentsOf: url!) ... } catch { print(error) } } }
|
近期评论