我正在从本地通知启动一些背景音乐。我收到以下错误代码:Error Domain=NSOSStatusErrorDomain Code=560557684 "(null)",即
AVAudioSessionErrorCodeCannotInterruptOthers 尝试在应用程序处于后台时激活不可混合的音频会话。仅当应用程序是 NowPlaying 应用程序时才允许这样做。
我找不到很多关于成为 NowPlaying 应用程序意味着什么的文档。目前我同时打电话给
UIApplication.shared.beginReceivingRemoteControlEvents()
和 NowPlayingInfo 函数首先。
MPNowPlayingInfoCenter.default().nowPlayingInfo = [
MPMediaItemPropertyTitle: currentPodName + " - " + currentEpName,
MPMediaItemPropertyArtist: currentAuthor,
MPMediaItemPropertyPlaybackDuration: CMTimeGetSeconds(self.player.currentItem!.duration),
MPNowPlayingInfoPropertyElapsedPlaybackTime: CMTimeGetSeconds(self.player.currentTime()),
MPMediaItemPropertyArtwork: MPMediaItemArtwork.init(boundsSize: image.size, requestHandler: { (size) -> UIImage in
return image
})
]
在设置 AV 会话之前
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
print("Playback OK")
try AVAudioSession.sharedInstance().setActive(true)
print("Session is Active")
} catch {
print(error)
}
我这样做是从
func userNotificationCenter(_: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
所以每次收到本地通知时都会调用它。我继续收到错误。我还能做些什么来让我的应用从后台启动不可混合的音频会话?
如果我无法从后台启动不可混合的音频会话,我可以使音频可混合,但我无法访问 MPRemoteCommandCenter,它无法与可混合的音乐集成。有没有办法从后台启动并保留 MPRemoteCommandCenter?