2017-05-05 10 views
0

私は音楽プレーヤーアプリを持っています。アプリがバックグラウンドになるとロックされた画面で音楽コントロールを表示します。私の場合は現在ラジオアーティストと曲を再生しています。私は、次を使用します。バックグラウンドでアプリケーションの状態をリフレッシュ

- (void)applicationWillResignActive:(UIApplication *)application { 
    [[PlayerManager sharedInstance] setupInfoForLockerScreen]; 
} 

-(void)setupInfoForLockerScreen{ 

    MPNowPlayingInfoCenter *infoCenter = [MPNowPlayingInfoCenter defaultCenter]; 
    NSString *songName = self.currentPlaylist.lastItem.track.song.length > 0 ? self.currentPlaylist.lastItem.track.song : @""; 
    NSString *artistName = self.currentPlaylist.lastItem.track.artist.length > 0 ? self.currentPlaylist.lastItem.track.artist : @""; 
    infoCenter.nowPlayingInfo = @{ 
            MPMediaItemPropertyTitle:  self.currentPlaylist.title, 
            MPMediaItemPropertyArtist: songName.length > 0 && artistName.length > 0 ? [NSString stringWithFormat:@"%@ - %@", songName, artistName] : @"", 
            MPMediaItemPropertyPlaybackDuration: @(0) 
            }; 
} 

問題は、データが変更され、次の曲がラジオでなりとき、どのように私は自分自身をリフレッシュするために私のアプリを教えてください? applicationWillResignActive私は、アプリが最初にバックグラウンドに行くときに一度だけ呼び出されると思う。

答えて

1

MPMusicPlayerControllerクラスには、これを支援するいくつかのメソッドとイベントがあります。

まずあなたがMPMusicPlayerControllerNowPlayingItemDidChangeNotificationイベントをリッスンするようにアプリケーションを伝える必要があります:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNowPlayingItemChangedEvent:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:self.myMusicPlayer]; 

これは、いつでも現在再生中の曲の変更呼び出されるイベントハンドラを登録します。

次に、MPMusicPlayerControllerのbeginGeneratingPlaybackNotificationsメソッドを呼び出して、再生通知の送信を開始するように指示します。

[self.myMusicPlayer beginGeneratingPlaybackNotifications]; 

あなたは、必要に応じてbeginGeneratingPlaybackNotificationsendGeneratingPlaybackNotificationsを呼び出すことで通知し、そうでないときにしたいときは、制御することができます。

次に、イベントハンドラを作成します。現在、曲の変更を再生したときに

は今、あなたのイベントハンドラが呼び出されます、あなたの今遊んで情報を更新することができます。これはMPMusicPlayerControllerNowPlayingItemDidChangeNotification火災たびに呼び出されるメソッドです。

+0

Loughiln私は音楽を再生するためにMPMusicPlayerControllerを使用しなかった場合はどうなりますか? –

関連する問題