【问题标题】:Spotify SDK in Swift 3.0: how to know when a song endsSwift 3.0 中的 Spotify SDK:如何知道歌曲何时结束
【发布时间】:2017-10-08 12:19:59
【问题描述】:

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

我只需要知道是否有办法判断一首歌曲何时结束,这样我就知道何时开始播放下一首歌曲或执行其他操作(每次歌曲因其他原因结束时我都会发出 HTTP 请求)。

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

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

这是一个类似的问题,但它是针对 javascript 的,但从未得到回答。

【问题讨论】:

    标签: ios swift swift3 spotify


    【解决方案1】:

    您可以实现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。)

    因为didStopPlayingTrack 是一个delegate 函数,当它被调用时,Spotify SDK 应该进行管理(更具体地说,播放器应该在其委托对象上调用它)——你不需要自己调用它因为设置了玩家的委托。

    【讨论】:

    • 我对 Swift 有点陌生,所以我对声明的 audioStreaming 函数有点困惑。我们是否将 player 作为第一个参数传入(因为它是 SPTAudioStreamingController)?您能否详细说明如何使用此功能?我非常感谢:)
    • 我更新了我的答案——如果还没有解决问题,请告诉我!
    • 有效!太感谢了!当我阅读更多关于 swift 协议的内容时,这更有意义。你是救生员!
    猜你喜欢
    • 2018-07-23
    • 2011-06-07
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多