2012-04-27 21 views
0

試圖挽救我的播放列表,脫機使用時,我在與CocoaLibSpotify問題時重置脫機可用曲目SP_TRACK_OFFLINE_WAITING。CocoaLibSpotify日誌中

所以我安裝我的應用程序,登錄首次,選擇一個播放列表,並將其設置爲脫機使用,立刻其offlineStatus變爲SP_PLAYLIST_OFFLINE_STATUS_DOWNLOADING,在播放列表中的所有曲目的offlineStatus改爲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,但這不起作用。我希望有人能夠對此有所瞭解。

在此先感謝。

回答

0

手動設置屬性不會影響除UI之外的任何內容。

有幾件事情要檢查:

  • 當您退出應用程序,請確保您註銷([SPSession -logOut]),等到退出讓應用程序在死之前完成,否則你可能會得到一個破碎緩存。

  • 當您再次重新登錄,您使用的CocoaLibSpotify的保存憑據或手動再次輸入您的密碼?如果是後者,它將不起作用,因爲庫無法聯繫Spotify服務來驗證憑據。使用CocoaLibSpotify的內置憑據保存不存在這個問題。

+0

您好,感謝您的回覆。我在查看示例應用程序時嘗試了您的建議。 在示例中,在applicationWillTerminate中調用了[SPSession註銷],根據我的經驗,即使使用應用程序,也應該在info.plist中獲取App Died事件標誌,但這種情況很少被調用。 我嘗試先用attemptLoginWithStoredCredentials登錄,然後用username,password和rememberCredentials設置爲YES。 現在我已經從示例中給出了LoginViewController,但到目前爲止它沒有任何區別。事實上,現在有時曲目甚至不會開始下載。 – Snppls 2012-04-28 12:20:50

+0

啊對了,我錯過了iOS旗幟。另一種策略是在'applicationDidEnterBackground:'上使用'[SPSession flushCaches]'。 – iKenndac 2012-04-28 14:10:45

+0

嗨,抱歉再次發表評論。我已經嘗試將[SPSession註銷]放在applicationDidEnterBackground中進行測試。到目前爲止它工作正常,現在當我登錄時,我總是可以使用存儲的憑據登錄,而離線可用的曲目仍然可用。但是,有時候我仍然遇到了爲離線使用設置播放列表的問題,其狀態會立即更改爲OFFLINE_STATUS_YES,所有曲目的狀態都會更改爲OFFLINE_WAITING,並且根本不會開始下載。 有什麼辦法可以強制CocoaLibSpotify開始同步? – Snppls 2012-04-28 14:28:46