Swift 3.0中的Spotify SDK:如何知道歌曲何时结束

时间:2017-05-10 02:06:45

标签: ios swift swift3 spotify

我正在使用Spotify api在Swift中构建一个个人应用程序,它需要做的一件事是在播放的歌曲结束后播放另一首歌曲。我有所有按照我希望的方式订购的歌曲的ID,我可以成功地播放它们。

我只需要知道是否有一种方法可以判断歌曲何时结束,所以我知道何时开始播放下一首歌或做其他事情(每次歌曲因其他原因而结束时我都会发出HTTP请求)。

您可以指出的任何建议或任何资源都非常有帮助!无法通过谷歌搜索找到答案:(

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

这是一个类似的问题,已发布,但它是针对JavaScript,它从来没有回答过。

1 个答案:

答案 0 :(得分:4)

您可以实施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() {
        // ...
    }
}

(请注意,如果观察播放器的对象是视图控制器而不是子类化viewDidLoad,则设置函数可以是任何内容 - 例如NSObject。)

因为didStopPlayingTrackdelegate函数,所以Spotify SDK应该在调用它时进行管理(更具体地说,播放器应该在其委托对象上调用它) - 您不需要只要玩家的代表被设置,就自己打电话。