1

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

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

但我不知道如何在 swift Ps 中编写 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 制作这样的东西

4

1 回答 1

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
于 2014-08-06T11:53:20.387 回答