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

iOS8以前

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 に答える