我正在使用Swift 3制作一个iOS应用程序,其中在锁屏和控制中心显示有关当前播放项目的信息会很好。
目前,我正在使用以下代码尝试将此信息插入nowPlayingInfo
字典中。 我还包括了对videoBeganPlaying(_ :)
中使用的VideoInfo
类的引用。
class VideoInfo {
var channelName: String
var title: String
}
// ...
var videoInfoNowPlaying: VideoInfo?
// ...
@objc private func videoBeganPlaying(_ notification: NSNotification?) {
// apparently these have to be here in order for this to work... but it doesn't
UIApplication.shared.beginReceivingRemoteControlEvents()
self.becomeFirstResponder()
guard let info = self.videoInfoNowPlaying else { return }
let artwork = MPMediaItemArtwork(boundsSize: .zero, requestHandler:
{ (_) -> UIImage in #imageLiteral(resourceName: "DefaultThumbnail") }) // this is filler
MPNowPlayingInfoCenter.default().nowPlayingInfo = [
MPMediaItemPropertyTitle: info.title,
MPMediaItemPropertyArtist: info.channelName,
MPMediaItemPropertyArtwork: artwork
]
print("Current title: ", MPNowPlayingInfoCenter.default().nowPlayingInfo?[MPMediaItemPropertyTitle])
}
该函数在应该被调用时被调用,打印语句输出“Optional("title")”。然而,控制中心和锁屏界面没有更新它们的信息。暂停/播放和快进按钮可以工作,因为我在
viewDidLoad()
中使用MPRemoteCommandCenter
设置了它们。出了什么问题?编辑:
正如马特所指出的那样,
AVPlayerViewController
使MPNowPlayingInfoCenter
变得混乱。这就是我的问题所在。我应该指定这是我正在使用的类,而不仅仅是AVPlayer
。参见:https://developer.apple.com/reference/avkit/avplayerviewcontroller/1845194-updatesnowplayinginfocenter