AudioPlayer播放没有声音

问题代码:

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)
}
}
}

Contents
,