【发布时间】:2018-01-22 10:46:03
【问题描述】:
我正在尝试通过通知扩展播放远程音频文件
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
//...
let url = URL(string: "https://firebasestorage.googleapis.com/v0/b/XXX.appspot.com/o/XXXXXXX?alt=media&token=XXXXXXX")
let item = AVPlayerItem(url: url!)
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: item)
let player = AVPlayer(playerItem: item)
player.play()
}
但是什么也没发生。
在应用程序的功能中,我启用了以下后台模式:“音频、AirPlay 和 PiP”、“后台获取”、“远程通知”
我需要在通知到达时播放声音而无需用户交互。 此外,媒体附件不是一个选项,因为 iOS 10 支持是强制性的。
UPD:我试过了
func download(url: URL) {
URLSession.shared.downloadTask(with: url, completionHandler: { _, _, error in
if let error = error {
print(error)
}
self.play(url: url)
}).resume()
}
func play(url: URL) {
let player = try! AVAudioPlayer(contentsOf: url)
player.prepareToPlay()
player.volume = 1.0
player.play()
}
什么也没发生
【问题讨论】:
-
我不知道你所说的“从通知扩展播放远程音频文件”是什么意思,但你应该使用 URLSessionDownloadTask。
-
@ElTomato 我刚才试过了,不行