Swift 3.0 中的 Spotify SDK:如何知道歌曲何时结束
Posted
技术标签:
【中文标题】Swift 3.0 中的 Spotify SDK:如何知道歌曲何时结束【英文标题】:Spotify SDK in Swift 3.0: how to know when a song ends 【发布时间】: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 的,但从未得到回答。
【问题讨论】:
【参考方案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 协议的内容时,这更有意义。你是救生员!以上是关于Swift 3.0 中的 Spotify SDK:如何知道歌曲何时结束的主要内容,如果未能解决你的问题,请参考以下文章
Spotify iOS SDK Swift 显示所有 (!) 播放列表 (20+)
如何使用 Spotify SDK 和 Swift 3 正确处理令牌刷新。错误代码 = 3840
Spotify SDK Demo Swift 可以工作,但不能翻译为基于 Storyboard 的项目
无法使用 Spotify iOS App Remote SDK 禁用自动播放
Quickblox + Swift 3.0 iOS SDK 错误:未找到应用程序和 QBConnectionZoneTypeProduction