MPNowPlayingInfoCenter defaultCenter不会更新或检索信息

我正在努力更新MPNowPlayingInfoCenter并有一些麻烦。 我已经尝试了很多,以至于我不知所措。 以下是我的代码:

self.audioPlayer.allowsAirPlay = NO; Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter"); if (playingInfoCenter) { NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init]; MPMediaItemArtwork *albumArt = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"series_placeholder"]]; [songInfo setObject:thePodcast.title forKey:MPMediaItemPropertyTitle]; [songInfo setObject:thePodcast.author forKey:MPMediaItemPropertyArtist]; [songInfo setObject:@"NCC" forKey:MPMediaItemPropertyAlbumTitle]; [songInfo setObject:albumArt forKey:MPMediaItemPropertyArtwork]; [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo]; } 

这不行,我也试过了:

  [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:nil]; 

试图让它从iPod应用程序(或任何可能有信息)中删除现有的信息。 另外,为了查看是否可以找出问题,我尝试检索当前的应用程序启动信息:

  NSDictionary *info = [[MPNowPlayingInfoCenter defaultCenter] nowPlayingInfo]; NSString *title = [info valueForKey:MPMediaItemPropertyTitle]; NSString *author = [info valueForKey:MPMediaItemPropertyArtist]; NSLog(@"Currently playing: %@ // %@", title, author); 

我得到Currently playing: (null) // (null)

我已经研究了这一点,下面的文章解释得非常彻底,但是,我仍然无法正常工作。 我错过了什么吗? 会有什么干扰吗? 这是一个服务,我的应用程序需要注册访问(没有看到这在任何文档)?

苹果公司的文件

更改locking屏幕背景audio控件

现在播放信息被忽略

我终于明白了这个问题,我并没有提示我的应用程序接收远程控制事件,只是简单地添加这一行就解决了这个问题:

  [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

我使用下面的代码,它始终工作。 我也像你一样使用MPMoviePlayer 。 你有没有检查NSClassFromString(@"MPNowPlayingInfoCenter")是否实际返回YES ? 你有没有设置你的应用程序播放你的plist后台键中的audio?

 - (void) loadMPInformation { NSDictionary *mpInfo; if([savedTrack.belongingAlbum.hasAlbumArt boolValue] == NO){ mpInfo = [NSDictionary dictionaryWithObjectsAndKeys:savedTrack.belongingAlbum.album, MPMediaItemPropertyAlbumTitle, savedTrack.belongingArtist.artist, MPMediaItemPropertyArtist, savedTrack.name, MPMediaItemPropertyTitle, nil]; } else { UIImage *artImage = [UIImage imageWithData:savedTrack.belongingAlbum.art]; MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:artImage]; mpInfo = [NSDictionary dictionaryWithObjectsAndKeys:savedTrack.belongingAlbum.album, MPMediaItemPropertyAlbumTitle, savedTrack.belongingArtist.artist, MPMediaItemPropertyArtist, savedTrack.name, MPMediaItemPropertyTitle, artwork, MPMediaItemPropertyArtwork, nil]; } [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = mpInfo; }