获取 MPNowPlayingInfoCenter 的 nowPlayingInfo 中显示的元数据(锁屏和远程控制)

Posted

技术标签:

【中文标题】获取 MPNowPlayingInfoCenter 的 nowPlayingInfo 中显示的元数据(锁屏和远程控制)【英文标题】:Get meta data displayed in MPNowPlayingInfoCenter's nowPlayingInfo(lock screen and remote control) 【发布时间】:2013-12-30 08:36:37 【问题描述】:

感谢您注意到这个问题。我想做一些关于音乐推荐的事情,我现在正在做的是利用MPNowPlayingInfoCenternowPlayingInfo,像这样:

NSDictionary *metaData = [[MPNowPlayingInfoCenter defaultCenter] nowPlayingInfo];
NSString *songTitle = metaData[MPMediaItemPropertyTitle];
NSString *albumnTitle = metaData[MPMediaItemPropertyAlbumTitle];
NSString *artist = metaData[MPMediaItemPropertyArtist];

但当“音乐”应用在后台播放音乐时,它总是返回 nil。 我查了相关文件,上面写着

 MPNowPlayingInfoCenter provides an interface for setting the current now 
 playing information for the application.
 The default center holds now playing info about the current application

似乎无法通过MPNowPlayingInfoCenter 获取其他应用的nowPlayingInfo。那么还有其他方法可以让其他应用的音乐元数据显示在遥控器/锁定屏幕中吗?谢谢!

【问题讨论】:

为什么要获取其他应用的数据? @Desmond 因为我想根据用户的兴趣向他/她推荐一些信息。音乐是一个很好的提示。 嗨,我曾尝试获取 nowplayinginfo,但无济于事。我不确定你是否能得到这些信息,因为所有应用程序都是沙盒的。 【参考方案1】:

您可以获取 iPod 当前正在播放的内容

MPMusicPlayerController* player = [MPMusicPlayerController iPodMusicPlayer];
//get now playing item
MPMediaItem*item = [player nowPlayingItem];
// get the title of song
NSString* titleStr = [item valueForProperty:MPMediaItemPropertyTitle];
NSLog(@"titlestr %@",titleStr);

【讨论】:

[player nowPlayingItem] 为我返回 nil @hodgesmr 您确定正在播放音乐 (iPod) 应用程序,而不是播客之类的其他应用程序吗? 它不适用于 Spotify 等第三方应用,仅适用于 ios 播放器。

以上是关于获取 MPNowPlayingInfoCenter 的 nowPlayingInfo 中显示的元数据(锁屏和远程控制)的主要内容,如果未能解决你的问题,请参考以下文章

导致 MPNowPlayingInfoCenter 丢失状态的广告横幅

MPNowPlayingInfoCenter 始终处于播放状态

如何在 Swift 中更新 MPNowPlayingInfoCenter?

MPNowPlayingInfoCenter:从 URL 设置 MPMediaItemArtwork 的最佳方法是啥?

MPNowPlayingInfoCenter - 当音频暂停时,经过的时间不断计数

MPNowPlayingInfoCenter 是不是与 AVAudioPlayer 兼容?