Spotify ios api (CocoaLibSpotify IOS Library) を使用して、iPhone / iPod / iPad デバイスにトラックをダウンロードできるかどうかを知りたいです。もしそうなら、私もそれらにアクセスしていつでもプレイする必要があります. 後でアプリで使用します。
sp_track_offline_status を使用すると、再生中のトラックのオフライン ステータスを確認できると思います。しかし、私はそれを乗り越えることができません。
サンプル コード スニペットは非常に役立ちます。
要件の簡素化: Spotify トラックをダウンロードして iOS デバイスに保存する
更新として、iKenndac の回答に応じて、offlineStatus プロパティが「1」になりました。これは、プレイリストがローカル ストレージに対して同期されていることを意味します。
SP_PLAYLIST_OFFLINE_STATUS_YES = 1, ///< プレイリストはローカル ストレージに同期されます
1.プレイリストの全曲がダウンロードされたということですか?
私はそうは思わない。次のように他の状態があるためです。
typedef enum sp_playlist_offline_status {
SP_PLAYLIST_OFFLINE_STATUS_NO = 0, ///< Playlist is not offline enabled
SP_PLAYLIST_OFFLINE_STATUS_YES = 1, ///< Playlist is synchronized to local storage
SP_PLAYLIST_OFFLINE_STATUS_DOWNLOADING = 2, ///< This playlist is currently downloading. Only one playlist can be in this state any given time
SP_PLAYLIST_OFFLINE_STATUS_WAITING = 3, ///< Playlist is queued for download
} sp_playlist_offline_status;
2 または 3 の offlineStatus を取得したことはありません。
- また、offlineDownloadProgress プロパティには常に「0」が表示されます。
私が間違っていなければ、「0」から「1」に増加する必要があります。
コードスニペット:
[SPAsyncLoading waitUntilLoaded:playList
timeout:kSPAsyncLoadingDefaultTimeout
then:^(NSArray *loadedItems, NSArray *notLoadedItems) {
playList.markedForOfflinePlayback = YES;
currentPlaylist = playList;
statusTimer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(checkOfflineStatus) userInfo:nil repeats:YES];
以下のように状態を確認しています。
-(void)checkOfflineStatus {
NSLog(@"playlist offline progress is: %f",currentPlaylist.offlineDownloadProgress);
NSLog(@"offline status: %d",currentPlaylist.offlineStatus);
}
出力は次のようになります。
2012-07-06 20:34:05.891 Simple Player[6571:10703] プレイリストのオフライン進行状況: 0.000000
2012-07-06 20:34:05.892 Simple Player[6571:10703] オフライン状態: 1
2012-07-06 20:34:06.039 Simple Player[6571:10703] プレイリストのオフライン進行状況: 0.000000
2012-07-06 20:34:06.039 Simple Player[6571:10703] オフライン状態: 1
次に何ができますか?