0

我正在从本地通知启动一些背景音乐。我收到以下错误代码: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?

4

0 回答 0