2017-01-16 6 views
2

私は、ロック画面とコントロールセンターの現在再生中のアイテムに関する情報を表示することがいい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:マットが指摘したように

AVPlayerViewControllerMPNowPlayingInfoCenterはファンキーなります。これは私の問題でした。 AVPlayerだけでなく、これが私が使用しているクラスであることを明記しておきます。

参照: https://developer.apple.com/reference/avkit/avplayerviewcontroller/1845194-updatesnowplayinginfocenter

答えて

4

それは仕事をし、そしてあなたが容易に控えて行くと、今演奏情報を設定することで、自分自身に証明できるようあなたは、その上のファーストレスポンダについてすべてのことGLOPを必要としません。そして他には何も

enter image description here

は、なぜそれがあなたのために働いていないではないですか?おそらくあなたは何らかの種類のプレーヤー(AVPlayerViewControllerなど)を使用していて、何らかの形で現在再生中の情報を設定していて、あなたの設定を上書きしている可能性があります。

+0

あなたはアートワークのことを無視しました...私はその質問のコードをよく理解しておらず、答えから何かを学びたいと思っています: –

+0

こんにちは@MottiShneor、あなたから聞いてよかった!あなたが特定の問題を抱えている場合は、別の質問としてそれを聞くことができますか? – matt

+0

私にとっては、これはシミュレータでのみ動作し、実際のデバイスでは動作しません。デバイスでは、コントロールセンターがアップデートするためにいくつかの音楽を再生する必要があります:( –

関連する問題