AVAudioEngine和AVAudioPlayerNode:未在iOS命令中心正确更新播放/暂停

AVAudioEngine和AVAudioPlayerNode:未在iOS命令中心正确更新播放/暂停,ios,avaudioengine,remote-control,Ios,Avaudioengine,Remote Control,我读过 我尝试了mpnowplayingfopropertyLappedBlaybackTime,mpnowplayingfopropertyDefaultPlaybackRate和mpnowPlayingfopropertyPlaybackRate 我已经更新了 苹果演示可以在iOS命令中心使用AVPlayer 这里是使用AVAudioEngine和AVAudioPlayerNode,AVAudioPlayerNode通过scheduleBuffer播放音频 以下是相关的iOS指挥中心代码:

我读过

我尝试了
mpnowplayingfopropertyLappedBlaybackTime
mpnowplayingfopropertyDefaultPlaybackRate
mpnowPlayingfopropertyPlaybackRate

我已经更新了

苹果演示可以在iOS命令中心使用
AVPlayer

这里是使用
AVAudioEngine
AVAudioPlayerNode
AVAudioPlayerNode
通过
scheduleBuffer
播放音频

以下是相关的iOS指挥中心代码:

func show(mediaInfo time: TimeInterval){
        let artistName = "test"
        
        guard let duration = length else {
            return
        }
        var isPlaying: Double = 0
        
        var pInfo: [String: Any] = [MPMediaItemPropertyArtist : artistName,
                                    MPMediaItemPropertyTitle : artistName ]
        if let img = UIImage(systemName: "music.note.list"){
            let artwork = MPMediaItemArtwork(boundsSize: img.size, requestHandler: {  (_) -> UIImage in
                return img
            })
            pInfo[MPMediaItemPropertyArtwork] = artwork
            
        }
        
        if streamer.state == .playing{
            isPlaying = 1
            pInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = time
            pInfo[MPMediaItemPropertyPlaybackDuration] = duration
        }
        pInfo[MPMediaItemPropertyPersistentID] = artistName
        pInfo[MPNowPlayingInfoPropertyPlaybackRate] = NSNumber(floatLiteral: isPlaying)
        pInfo[MPNowPlayingInfoPropertyDefaultPlaybackRate] = NSNumber(floatLiteral: isPlaying)
        pInfo[MPNowPlayingInfoPropertyMediaType] = NSNumber(value: MPNowPlayingInfoMediaType.audio.rawValue)
        MPNowPlayingInfoCenter.default().nowPlayingInfo = pInfo
    }

这是


相应的音频会话:

func setupAudioSession() {
        let session = AVAudioSession.sharedInstance()
        do {
            try session.setCategory(.playback, mode: .default, policy: .default, options: [.allowBluetoothA2DP,.defaultToSpeaker])
            try session.setActive(true)
        } catch {
            os_log("Failed to activate audio session: %@", log: ViewController.logger, type: .default, #function, #line, error.localizedDescription)
        }
    }
也试过

let audioSession = AVAudioSession.sharedInstance()
        do {
            try audioSession.setCategory(AVAudioSession.Category.playAndRecord, options: AVAudioSession.CategoryOptions.defaultToSpeaker)
            audioSession.requestRecordPermission({ (isGranted: Bool) in
                
            })
        } catch  {}

要在command center中显示元数据,您需要有一个活动的不可混合音频会话类别,并且当前还需要生成音频。您能显示您的音频会话配置吗?已更新。您可以尝试使用github代码,如果方便的话,可以在命令中心显示元数据。您需要有一个活动的不可混合音频会话类别,并且当前还需要生成音频。您能显示您的音频会话配置吗?已更新。如果方便的话,您可以尝试github代码