找出Music.app中正在播放的歌曲

在iOS上,我的应用程序是否有一种方法可以找出当前在“音乐”应用程序中正在播放的歌曲? 例如,如果他们在使用我的应用程序时在后台播放歌曲,我可以获取有关该歌曲的信息吗? 如果可以的话,有没有办法让我的应用程序在新歌开始播放时收到某种通知? 谢谢!

有可能得到这样的信息:(还有很多其他MPMediaItemProperties)至于你的第二个问题,我不相信这是可能的,而你的应用程序是在后台状态。

编辑:也许你可以在后台每隔xx秒在下面调用这段代码,然后比较这些值,看看音乐是否自己改变了。 请注意,尽pipe您的应用程序只能在后台运行一段时间,但在此之后,您将无法获取更新后的值。

#import <MediaPlayer/MediaPlayer.h> @property (nonatomic, strong) MPMediaItem *lastItem; - (void)viewDidLoad { [super viewDidLoad]; NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:20.0 target:self selector:@selector(checkIfSongChanged) userInfo:nil repeats:YES]; [timer fire]; } - (void)checkIfSongChanged { if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying) { MPMediaItem *nowPlayingMediaItem = [[MPMusicPlayerController iPodMusicPlayer] nowPlayingItem]; if (self.lastItem && nowPlayingMediaItem != self.lastItem) { NSLog(@"New media item is: %@",nowPlayingMediaItem); } self.lastItem = nowPlayingMediaItem; NSLog(@"Media item is: %@,",nowPlayingMediaItem); } } 

AppDelegate.m:

 - (void)applicationDidEnterBackground:(UIApplication *)application { UIBackgroundTaskIdentifier __block task = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^ { [[UIApplication sharedApplication] endBackgroundTask:task]; task = UIBackgroundTaskInvalid; }]; }