Установите MPNowPlayingInfoCenter currentTime и songLength из AVAudioPlayer

У меня возникли проблемы с установкой currentTime и songLength для MPNowPlayingInfoCenter. Вот мой код:

func updateNowPlayingCenter (title: String, artist: String, albumArt: AnyObject, currentTime: NSNumber, songLength: NSNumber, PlaybackRate: Double){

    var songInfo: Dictionary <NSObject, AnyObject> = [

        MPMediaItemPropertyTitle as NSObject: title as AnyObject,

        MPMediaItemPropertyArtist as NSObject: artist as AnyObject,

        MPMediaItemPropertyArtwork as NSObject: ???,

        MPNowPlayingInfoPropertyElapsedPlaybackTime as NSObject: currentTime,

        MPMediaItemPropertyPlaybackDuration as NSObject: songLength,

        MPNowPlayingInfoPropertyPlaybackRate as NSObject: PlaybackRate as AnyObject


    ]

    MPNowPlayingInfoCenter.default().nowPlayingInfo = songInfo as [NSObject : AnyObject] as! [String : Any]

}

И здесь я устанавливаю свойства в представленииWillAppear:

updateNowPlayingCenter(title: titleText[thisSong], artist: authorText[thisSong], albumArt: ??? as AnyObject, currentTime: ???, songLength: ???, PlaybackRate: 1.0)

Я пытался использовать audioPlayer.currentTime и audioPlayer.duration, но это не сработало. Как мне это сделать? Кроме того, я не могу понять, как установить изображение MPMediaItemPropertyArtwork. У меня есть файлы в моих активах, а имя изображения равно titleText[thisSong]. Если бы вы могли помочь мне с этим, это было бы здорово! Спасибо!


person iFunnyVlogger    schedule 03.06.2017    source источник


Ответы (1)


Медиа Руководство по программированию воспроизведения дает ответ:

func setupNowPlaying() {
    // Define Now Playing Info
    var nowPlayingInfo = [String : Any]()
    nowPlayingInfo[MPMediaItemPropertyTitle] = "My Movie"
    if let image = UIImage(named: "lockscreen") {
        nowPlayingInfo[MPMediaItemPropertyArtwork] =
            MPMediaItemArtwork(boundsSize: image.size) { size in
                return image
        }
    }
    nowPlayingInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = playerItem.currentTime().seconds
    nowPlayingInfo[MPMediaItemPropertyPlaybackDuration] = playerItem.asset.duration.seconds
    nowPlayingInfo[MPNowPlayingInfoPropertyPlaybackRate] = player.rate

    // Set the metadata
    MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
}
person CyberMoai    schedule 27.09.2017