2017-05-10 28 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