2013-12-11 407 views
30

我試圖獲取Spotify iOS應用中當前播放歌曲的相關信息。場景如下:打開Spotify iOS應用程序,開始播放歌曲。將該應用放在後臺並打開我的iOS應用。有什麼方法可以讓我在iOS應用中使用Spotify播放歌曲?從Spotify iOS應用獲取當前播放歌曲

我已經使用nowPlayingItem財產在這篇文章中描述的嘗試,但沒有奏效:On iPhone: Find out what song is currently playing? (in the iPod music player)

我已經使用[MPNowPlayingInfoCenter defaultCenter] .nowPlayingInfo在這篇文章中描述試過,但沒」 t工作:Is there a way to access the currently played track while the iPhone is connected to an accessory?

我在蘋果開發者論壇上看到了這個帖子中提出的同樣的問題:https://devforums.apple.com/message/903640#903640

有沒有人遇到過這個問題?你找到了一個可行的解決方案嗎?

感謝,

+0

[確定歌曲在iPhone上由第三方應用播放]的可能重複(http://stackoverflow.com/questions/8542854/determine-song-being-played-on-iphone-by-third-party-應用程序) – feco

+0

我不認爲這是重複的,因爲該問題是要求一個通用的解決方案,所以對這個問題的任何答案都不能考慮任何可能的Spotify特定的API。 –

+0

這可能會幫助你:[獲取元數據顯示在MPNowPlayingInfoCenter's nowPlayingInfo](http://stackoverflow.com/questions/20534939/get-meta-data-displayed-in-mpnowplayinginfocenters-nowplayinginfolock-screen-a) –

回答

1

如果我沒看錯,蘋果不允許程序共享數據(出於安全原因)。所以也許這就是問題所在。

+0

你應該提供你在哪裏獲取這些信息。 – Buzinas

4

這裏是斯威夫特3的解決方案:

let player = MPMusicPlayerController.systemMusicPlayer() 
if let mediaItem = player.nowPlayingItem { 
    let title: String = mediaItem.value(forProperty: MPMediaItemPropertyTitle) as! String 
    let albumTitle: String = mediaItem.value(forProperty: MPMediaItemPropertyAlbumTitle) as! String 
    let artist: String = mediaItem.value(forProperty: MPMediaItemPropertyArtist) as! String 

    print("\(title) on \(albumTitle) by \(artist)") 
} 

注意,從iOS的10日開始,你必須在Info.plist中,以獲得訪問用戶的音樂設置一個描述字符串NSAppleMusicUsageDescription

mediaItem將是MPMediaItem的實例,如果有東西在播放。您可以使用value(forProperty:)方法訪問媒體項目的屬性。這個方法有一個屬性。這些屬性在「General Media Item Property Keys」標題下的MPMediaItem的文檔中定義。

+1

這隻適用於iOS播放器。像Spotify這樣的第三方應用程序,'mediaItem'是'nil'。 – Rob

+0

我也在尋找這個,有無論如何訪問第三方應用程序'現在播放信息? – GarySabo

相關問題