iPodが現在再生中のアイテム(曲)を変更したときに通知を受け取りたいこのテストアプリを実行しています。アプリがフォアグラウンドにある間はテストはうまく機能しますが、アプリがバックグラウンドに移行するとすぐに通知が停止します大丈夫です。もう一度アプリをタップすると (フォアグラウンドに来ます)、アプリがバックグラウンドにある間に現在再生中のものが変更されたときにすべての通知を受け取りますが、毎回同じ曲の情報を取得しているので、どうすれば取得できますか?各通知の正しい曲情報?
これは、AppDelegate で行ったテストです。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
MPMusicPlayerController *player = [MPMusicPlayerController iPodMusicPlayer];
[notificationCenter addObserver:self
selector:@selector(nowPlayingItemChanged:)
name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification
object:player];
[player beginGeneratingPlaybackNotifications];
return YES;
}
-(void) nowPlayingItemChanged:(NSNotification *)notification {
MPMusicPlayerController *player = (MPMusicPlayerController *)notification.object;
MPMediaItem *song = [player nowPlayingItem];
if (song) {
NSString *title = [song valueForProperty:MPMediaItemPropertyTitle];
NSString *album = [song valueForProperty:MPMediaItemPropertyAlbumTitle];
NSString *artist = [song valueForProperty:MPMediaItemPropertyArtist];
NSString *playCount = [song valueForProperty:MPMediaItemPropertyPlayCount];
NSLog(@"title: %@", title);
NSLog(@"album: %@", album);
NSLog(@"artist: %@", artist);
NSLog(@"playCount: %@", playCount);
}
}