在使用 Spotify 播放器时,我们偶尔会遇到持续大约 10 秒的卡顿。虽然有几个方面对我来说似乎不正常,但最一致的迹象是,我们不止一次地点击了 didStartPlayingTrack
委托(delegate)方法,即使我们只告诉玩家玩一次。有谁知道什么会导致这种情况发生?
重要提示:这是 spotify-ios-sdk 版本 0.21
日志示例:
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyTrackDelivered") // Last track ended
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyAudioDeliveryDone")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyPause")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyMetadataChanged")
movePlayerPosition(_:completion:)[L:180]: seek successful to 0.842
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyMetadataChanged")
13:13:50 audioStreaming(_:didStartPlayingTrack:)[L:377]: didStartPlayingTrack: Optional("So Far Away (Live) - Live")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyTrackChanged")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackEventAudioFlush")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyPlay")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyMetadataChanged")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyMetadataChanged")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyContextChanged")
13:14:01 audioStreaming(_:didStartPlayingTrack:)[L:377]: didStartPlayingTrack: Optional("So Far Away (Live) - Live")
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackNotifyTrackChanged")
audioStreaming(_:didSeekToPosition:)[L:474]: did seek to position: 0.001
audioStreaming(_:didReceive:withName:)[L:412]: didReceiveEvent: Optional("SPPlaybackEventAudioFlush")
有什么办法可以防止这种口吃的发生吗?
更新
我已经切换到版本 25,但我仍然遇到这个问题。我在口吃日志中发现的一个显着特征是,在大多数歌曲开始时,除非特别要求,否则我不会得到 didSeekToPosition
委托(delegate);但是,当遇到口吃时,口吃开始时我会看到以下内容:
audioStreaming(_:didStartPlayingTrack:)[L:377]: didStartPlayingTrack
audioStreaming(_:didSeekToPosition:)[L:474]: did seek to position: 0.001
明确一点,只有一种方法调用playSpotifyUri
;然而,这个 didStartPlaying
委托(delegate)被多次命中。
最佳答案
iOS SDK 现在是 Beta 25 版本,你考虑过升级吗?我建议这样做,看看它是否能解决您的问题。
我需要查看您的具体实现以便进行调试。
关于ios - 卡顿和轨道开始多次播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43878539/