我有一个自定义的一个大问题,远程通知声音。
这是我的情景:
我有两种类型的通知每一个与自定义声音。 声音,播放有魅力,当我的应用程序是无效的或背景,以及OS显示通知中心横幅警报通知。
当在前景状态中接收的通知时,我处理通知,提取APS声音元素和我经由AVAudioPlayer播放声音:
func playSound(_ sound: String) {
myLog("Let's play sound \(sound)")
// Plays new sound file
DispatchQueue.main.async {
// Stops last player if playing
if (self.soundPlayer != nil) {
if (self.soundPlayer.isPlaying) {
self.soundPlayer.stop()
}
}
do {
let path = Bundle.main.path(forResource: sound, ofType:nil)!
let url = URL(fileURLWithPath: path)
self.soundPlayer = try AVAudioPlayer(contentsOf: url)
self.soundPlayer.delegate = self
if (self.soundPlayer.prepareToPlay()) {
self.soundPlayer.play()
}
} catch let error {
myLog("Error playing .caf file: \(error)")
}
}
}
在这里开始的问题。 如果应用程序返回到后台 - 不活动时,我的播放器代码被执行在通知中心操作系统警报不会再扮演的自定义声音。
总结:
应用程序无效 - 背景收到通知 - >自定义声音播放确定。
它接收通知应用前景 - >代码经由playSound功能播放声音然后如果应用接收背景不活动状态其它通知OS播放默认通知声音。
提前致谢。