屏幕锁定时,NotificationCenter停止工作

时间:2016-11-18 18:08:36

标签: ios swift xcode swift3

我正在构建的应用程序遇到问题,应用程序的目标是播放音频文件,它通过从公共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会实时决定音频,而且所有这些都是在后端完成的,因此无法在不破坏应用要求的情况下缓冲多个音频

我有什么选择?,感谢任何帮助。

0 个答案:

没有答案