私は、ロック画面とコントロールセンターの現在再生中のアイテムに関する情報を表示することがいいSwift 3を使ってiOSアプリケーションを作っています。MPNowPlayingInfoCenterはnowPlayingInfoに割り当てられた後に情報を更新しません。
現在、次のコードを使用してこの情報を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")
を出力し、それがあるべきときに呼び出され、print文が実行されます。しかし、コントロールセンターとロック画面は情報を更新しません。私はviewDidLoad()
でMPRemoteCommandCenter
を使用してそれらを設定したので、一時停止/再生、およびスキップ転送ボタンが機能します。
どうなりますか?
EDIT:マットが指摘したように
、AVPlayerViewController
はMPNowPlayingInfoCenter
はファンキーなります。これは私の問題でした。 AVPlayer
だけでなく、これが私が使用しているクラスであることを明記しておきます。
あなたはアートワークのことを無視しました...私はその質問のコードをよく理解しておらず、答えから何かを学びたいと思っています: –
こんにちは@MottiShneor、あなたから聞いてよかった!あなたが特定の問題を抱えている場合は、別の質問としてそれを聞くことができますか? – matt
私にとっては、これはシミュレータでのみ動作し、実際のデバイスでは動作しません。デバイスでは、コントロールセンターがアップデートするためにいくつかの音楽を再生する必要があります:( –