我正在构建的应用程序遇到问题,应用程序的目标是播放音频文件,它通过从公共API请求音频文件,播放它并等到它结束,它结束请求后工作另一个音频并重新开始。
这是执行此操作的代码的缩短版本,为简单起见省略了错误检查部分
func requestEnded(audioSource: String) {
let url = URL(string: "https://example.com/audios/" + audioSource)
audio = AVPlayer(url: url!)
NotificationCenter.default.addObserver(self,selector: #selector(MediaItem.finishedPlaying(_:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: audio?.currentItem)
audio?.play()
}
@objc func finishedPlaying(_ notification: NSNotification) {
print("Audio ended")
callAPI()
}
func callAPI() {
// do all the http request stuff
requestEnded(audioSource: "x.m4a")
}
// callAPI() is called when the app is initialized
屏幕解锁时效果很好。当我锁定手机时,当前音频会继续播放但是当它结束时finishedPlaying()
永远不会被调用(控制台上不会显示打印语句)。
我怎样才能让应用程序知道音频结束并在锁定时触发另一个?在Android版本中我通过使用部分唤醒锁定解决了屏幕锁定问题,即使屏幕关闭也能正常运行
必须以这种方式完成,因为API会实时决定音频,而且所有这些都是在后端完成的,因此无法在不破坏应用要求的情况下缓冲多个音频
我有什么选择?,感谢任何帮助。