【发布时间】:2017-10-08 06:42:37
【问题描述】:
在使用 Spotify 播放器时,我们偶尔会遇到持续大约 10 秒的口吃。虽然有几个方面对我来说似乎不正常,但最一致的迹象是,我们不止一次地点击了didStartPlayingTrack 委托方法,即使我们只告诉玩家玩一次。有没有人知道什么会导致这种情况发生?
重要提示:这是spotify-ios-sdk version 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 代表;但是,当遇到口吃时,我会在口吃开始时看到以下内容:
audioStreaming(_:didStartPlayingTrack:)[L:377]: didStartPlayingTrack
audioStreaming(_:didSeekToPosition:)[L:474]: did seek to position: 0.001
需要明确的是,只有一种方法调用playSpotifyUri;但是,这个 didStartPlaying 代表会被多次命中。
【问题讨论】: