MPNowPlayingInfoCenter迅速

时间:2014-08-06 10:54:53

标签: swift mpnowplayinginfocenter

的StackOverflow 我想尝试使用swift lang从ios7 +中的控制中心读取当前播放的歌曲 在objective-c中,我可以使用此代码阅读它

NSDictionary *nowPlaying = @{MPMediaItemPropertyArtist: currentTrack.artist,
                             MPMediaItemPropertyAlbumTitle: currentTrack.title};

但我不知道如何在swift中编写song_info_getter方法 附:我无法在SO上找到类似的问题

具体来说,我无法获取当前的曲目信息。 (艺术家/专辑/等)

我在桌面(mac)上做了这个:

func get_iTunes_data() {         
    NSDistributedNotificationCenter.defaultCenter().addObserver(self, selector: "allDistributedNotifications:", name: "com.apple.iTunes.playerInfo", object: "com.apple.iTunes.player")     
}

var now : String = ""      
func allDistributedNotifications (note : NSNotification) {                 
    let userInfo:NSDictionary = note.userInfo as NSDictionary        
    println(userInfo)
}

但我不知道如何为iOS制作这样的

1 个答案:

答案 0 :(得分:3)

在iOS上,这实际上是无痛的。 MPMusicPlayerController类提供了以MPMediaItem形式访问正在播放的项目的方法,其中包含所有这些信息。

iOS 8 +

let nowPlaying = MPMusicPlayerController.systemMusicPlayer().nowPlayingItem

在iOS 8之前

let nowPlaying = MPMusicPlayerController.iPodMusicPlayer().nowPlayingItem

然后从MPMediaItem中提取从上面返回的各条信息。请记住,所有不同的键都以MPMediaItemProperty开头......但并非所有键都返回字符串。有些人会返回NSNumbers等。请参阅文档以获取相关信息。

let trackName = nowPlaying.valueForProperty(MPMediaItemPropertyTitle) as String

真实答案

抱歉,我是为MPMusicPlayController做的。以下是如何从MPNowPlayingInfoCenter访问信息。

let nowPlaying = MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo