我正在使用SPPlaybackManager播放曲目,但在播放的一些小而重要的方面遇到困难。曲目正在加载和流式传输,但通常在调用SPAsyncLoading的回调函数后25到1.25秒内开始播放。我已经尝试了很多方法来查看曲目真正开始播放的时间,但似乎都表明播放已经在调用SPAsyncLoading回调(包括playbackManager.isPlaying,playbackManager.currentTrack等)时开始播放。我确定回放实际上是在我之前提到的短暂延迟之后开始的,通过设置NSTimer在SPAsyncLoading回调时运行10秒,在10秒后获得playbackManager.trackPosition并找出差异。 TL; DR - 当CocoaLibSpotify说它启动时,播放实际上并不开始。SPPlaybackManager - 延迟和加载
由于这个原因,出现了一些问题:首先,最重要的是,歌曲在最后由最初回调和回放之间存在的任何偏移量截断。其次,从用户体验的角度来看,我需要能够向我的用户指出他们处于SPAsyncLoading回调和实际回放(即赛道准备进行比赛但尚未比赛)之间的“死角”。任何有关如何规避或解决这些问题的建议都非常感谢!
非常有帮助的回答。当然很惊讶地发现我们不应该使用'SPAsyncLoading'进行播放。我们应该调用'preloadTrackForPlayback'吗? –
正确。 SPAsyncLoading仅适用于元数据,仅适用于公共符合“”协议的类 - “SPPlaybackManager”不属于这些类之一。 'preLoadTrackForPlayback'不是必需的,但是如果你有时间备用(例如,前一首歌曲即将完成),将会减少调用'playTrack:'和获取音频之间的等待时间。调用'preloadTrackForPlayback'立即跟随'playTrack:'不会让你加速。 –
iKenndac
当我自己调用'playTrack:'时,我得到错误“资源尚未加载”,因此我在启动播放之前如何获得必要的数据感到困惑。我错过了什么吗?非常感谢你们的帮助。 –