ios - 如何在 Spotify 播放器中向前或向后 10 秒

标签 ios swift spotify duration

我正在尝试在 Spotify 播放器中添加(向前移动)10 秒歌曲持续时间或减去(向后移动)10 秒,但我真的很困惑如何添加或减去。

当我尝试使用此代码时,歌曲的持续时间没有改变

// forward button action 
@IBAction func moveFrdBtnAction(_ sender: Any) {
  SpotifyManager.shared.audioStreaming(SpotifyManager.shared.player, didSeekToPosition: TimeInterval(10))
}

// spotify delegate method seekToPosition
func audioStreaming(_ audioStreaming: SPTAudioStreamingController!, didSeekToPosition position: TimeInterval) {
    player?.seek(to: position, callback: { (error) in
        let songDuration = audioStreaming.metadata.currentTrack?.duration as Any as! Double
        self.delegate?.getSongTime(timeCount: Int(songDuration)+1)
    })
}

我们正在两个平台(Android 和 iOS)中使用相同的 SDK 制作音乐应用程序,Spotify SDK 的 seekToPosition 方法在 Android 版本中工作正常,但是,它在 iOS 版本中不工作。委托(delegate)方法调用自身但音乐停止。

您能否告诉我们为什么会出现这种情况,以及我们应该如何在 iOS 设备上运行它。

有人可以向我解释如何解决这个问题,我已经尝试解决这个问题但还没有结果。

如有任何帮助,我们将不胜感激。

提前致谢。

最佳答案

我不使用此 API,因此我的答案将基于您的代码和 Spotify 的 reference documentation .

我认为您的流程存在一些问题:

  1. 作为Robert Dresler评论说,你应该(大约)永远不要直接调用代表,代表调用你。
  2. 我很确定您的操作当前会导致 正好跳 10 秒,而不是 10 秒。

(顺便说一句,我建议更改您的函数moveFrdBtnAction 的名称以至少添加更多元音)

无论如何,这是我对您想要什么的最佳猜测:

// forward button action 
@IBAction func moveForwardButtonAction(_ sender: Any) {
   skipAudio(by: 10)
}

@IBAction func moveBackButtonAction(_ sender: Any) {
   skipAudio(by: -10)
}

func skipAudio(by interval: TimeInterval) {
   if let player = player {
      let position = player.playbackState.position // The documentation alludes to milliseconds but examples don't.
         player.seek(to: position + interval, callback: { (error) in
         // Handle the error (if any)
      })
   }
}

// spotify delegate method seekToPosition
func audioStreaming(_ audioStreaming: SPTAudioStreamingController!, didSeekToPosition position: TimeInterval) {
   // Update your UI
}

请注意,我没有处理在轨道开始之前寻找,也没有在结束之后处理,这可能会发生在一个简单的 position + interval 上。 API 可能会为您处理此问题,也可能不会。

关于ios - 如何在 Spotify 播放器中向前或向后 10 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55376656/

相关文章:

ios - Swift 3.0 中的 Spotify SDK : how to know when a song ends

jquery - 单击触发它显示的链接时,如何触发 Spotify 播放按钮播放?

ios - MapKit Overlay Swift 问题

ios - 显示分数 uitextfield

ios - 为什么每次访问我的关系对象时都会重新初始化?

ios - SPTSessionManager 未初始化或失败

ios - 适用于小型企业的私有(private) iOS 应用程序

iphone - 获取 iOS 版 Facebook 用户名

ios - Swift 同时检测屏幕左右两侧的触摸

ios - 如何构建/获取共享点文档的 Office Web App URL