我正在使用 Swift 3 制作一个 iOS 应用程序,其中在锁定屏幕和控制中心上显示有关当前播放项目的信息会很好。
目前,我正在使用以下代码尝试将此信息插入nowPlayingInfo
字典。我还包含了VideoInfo
对videoBeganPlaying(_:)
.
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])
}
该函数在它应该被调用的时候被调用,并且 print 语句被执行,输出Optional("title")
. 但是,控制中心和锁屏不会更新它们的信息。暂停/播放,并且向前跳过按钮起作用,因为我将它们设置为viewDidLoad()
using MPRemoteCommandCenter
。
怎么了?
编辑:
正如马特指出的那样,AVPlayerViewController
这MPNowPlayingInfoCenter
很时髦。这是我的问题。我应该指定这是我正在使用的类,而不仅仅是AVPlayer
.