2017-05-10 45 views
0

我正在Swift中使用Spotify API構建個人應用程序,並且需要做的一件事是在播放歌曲後播放另一首歌曲過度。所有歌曲的ID都按照我希望的方式排列,我可以成功地播放它們。Swift 3.0中的Spotify SDK:如何知道歌曲何時結束

我只需要知道是否有方法可以告訴歌曲何時結束,以便我知道什麼時候開始播放下一個歌曲或做其他事情(每當歌曲結束時我都會發出HTTP請求原因)。

任何建議或任何資源,你可以指向我是非常有幫助的!無法找到答案,通過谷歌搜索:(

Spotify API: Is there a way to determine when a song has finished playing?

這是一個被張貼了類似的問題,但它是javascript和它從來沒有回答。

回答

2

您可以實現SPTAudioStreamingPlaybackDelegate協議,設置Spotify的播放器的playbackDelegate財產和實施didStopPlayingTrack一個例子類將是這個樣子:

class MyClass: NSObject, SPTAudioStreamingPlaybackDelegate { 
    var player = SPTAudioStreamingController.sharedInstance() 


    func setup() {   // Whatever function does the setup. 
     player?.playbackDelegate = self 
    } 

    func audioStreaming(_ audioStreaming: SPTAudioStreamingController!, didStopPlayingTrack trackUri: String!) { 
     playNextSong()  // Or whatever else you wish to do here. 
    } 

    func playNextSong() { 
     // ... 
    } 
} 

(注意設置˚F恩膏可以是任何東西 - 如果觀察玩家的對象是一個視圖控制器,而不是繼承NSObjectviewDidLoad

因爲didStopPlayingTrackdelegate功能,當它被稱爲Spotify的SDK應該管理(更具體地說,玩家應該在它的委託對象上調用它) - 只要玩家的委託被設置,你就不需要自己調用它。

+0

我對Swift有點新,所以我對聲明的audioStreaming函數有點困惑。我們會傳入播放器作爲第一個參數嗎(因爲它是SPTAudioStreamingController)?你能否詳細說明如何使用這個函數多一點?我非常感謝:) – Bradass

+1

我更新了一下我的答案 - 讓我知道如果仍然不能解決問題! – Samantha

+0

它的工作原理!非常感謝!當我多讀一些關於快速協議的東西時,它會更有意義。你是一個救星! – Bradass