CocoaLibSpotify 在登录期间将离线可用曲目重置为 SP_TRACK_OFFLINE_WAITING

Posted

技术标签:

【中文标题】CocoaLibSpotify 在登录期间将离线可用曲目重置为 SP_TRACK_OFFLINE_WAITING【英文标题】:CocoaLibSpotify resets offline available tracks to SP_TRACK_OFFLINE_WAITING during log in 【发布时间】:2012-05-08 13:44:39 【问题描述】:

我在尝试保存播放列表以供离线使用时遇到 CocoaLibSpotify 问题。

所以我安装了我的应用程序,第一次登录,选择一个播放列表并将其设置为离线使用,它的离线状态立即更改为 SP_PLAYLIST_OFFLINE_STATUS_DOWNLOADING,播放列表中的所有曲目的离线状态都更改为 SP_TRACK_OFFLINE_WAITING,他们开始下载一个一次,最终他们的 offlineStatus 更改为 SP_TRACK_OFFLINE_DONE。 我关掉了我的 wifi,我可以离线播放下载的曲目。

当我关闭应用程序并再次登录时,之前离线可用的曲目现在其offlineStatus 更改为SP_TRACK_OFFLINE_WAITING,并且无法再离线播放。 CocoaLibSpotify 将下载的播放列表存储在 NSCachesDirectory 中,如果我检查该文件夹,我发现内容没有更改并且曲目数据仍然存在。

另外一件奇怪的事,我认为即使在在线模式下,如果离线可用,CocoaLibSpotify 也会播放从设备下载的曲目。如果我打开 wifi 并开始播放这些之前下载的 SP_TRACK_OFFLINE_WAITING 曲目,然后快速关闭 wifi,它仍然会继续播放整个曲目。

因此,从外观上看,我假设曲目仍处于离线状态,但由于某种原因,它们的 offlineStatus 在登录时状态错误。会话由于其 offlineStatus 而拒绝开始播放曲目。

但是我怎样才能避免曲目的离线状态重置,或者至少在我知道曲目已下载时纠正问题。我尝试手动将 offlineStatus 设置为 SP_TRACK_OFFLINE_DONE ,但这没有用。我希望有人能对此有所了解。

提前致谢。

【问题讨论】:

【参考方案1】:

手动设置属性不会影响您的 UI。

有几件事需要检查:

当您退出应用程序时,请确保您退出 ([SPSession -logOut]) 并等到退出完成后再让应用程序终止,否则您可能会得到一个损坏的缓存。

当您再次登录时,您是使用 CocoaLibSpotify 保存的凭据还是再次手动输入密码?如果是后者,它将无法工作,因为图书馆无法联系 Spotify 服务来验证凭据。使用 CocoaLibSpotify 内置的凭证保存就没有这个问题。

【讨论】:

您好,感谢您的回复。我在查看示例应用程序时尝试了您的建议。在示例中,[SPSession logout] 在 applicationWillTerminate 中被调用,根据我的经验,即使应用程序应该在 info.plist 中获取 App Died 事件标志,它也很少被调用。我尝试先使用尝试登录WithStoredCredentials 登录,然后将用户名、密码和rememberCredentials 设置为YES。现在我已经从示例中尝试了 LoginViewController,但到目前为止它没有任何区别。事实上,现在有时曲目甚至都不会开始下载。 啊,对了,我错过了 ios 标志。另一种策略是在applicationDidEnterBackground: 上使用[SPSession flushCaches] 嗨,很抱歉再次发表评论。我尝试将 [SPSession logout] 放在 applicationDidEnterBackground 中只是为了测试。到目前为止它可以工作,现在当我登录时,我总是可以使用存储的凭据登录,并且离线可用的曲目仍然可用。但是,有时我仍然会遇到问题,我设置了一个播放列表供离线使用,它的状态立即变为 OFFLINE_STATUS_YES,所有曲目的状态都变为 OFFLINE_WAITING 并且根本不开始下载。有什么办法可以强制 CocoaLibSpotify 开始同步? [SPSession flushCaches] 似乎和 [SPSession logout] 一样有效。我仍然遇到有时下载拒绝开始但再次登录的问题,将播放列表的离线状态设置为关闭然后再次打开似乎可以解决它。谢谢。

以上是关于CocoaLibSpotify 在登录期间将离线可用曲目重置为 SP_TRACK_OFFLINE_WAITING的主要内容,如果未能解决你的问题,请参考以下文章

将离线资源加载到 UIWebView 或替代解决方案中

将离线地图作为应用内购买出售

离线可持久化数据结构(主席树)

离线可持久化数据结构(主席树)

如何将离线转化数据导入 Firebase Analytics?

Spotify cocoalibspotify 离线状态设置为 1 但所有曲目都停留在等待状态