Spotify API для ios: загрузка, сохранение, доступ к трекам из ios spotify api

Я хотел бы знать, возможна ли загрузка треков на устройства iphone / ipod / ipad с использованием spotify ios api (CocoaLibSpotify IOS Library). Если это так, мне также нужно получить к ним доступ и играть в любое время, когда захочу. Я буду использовать их в моем приложении позже.

Я думаю, что мы можем проверить автономный статус трека, который воспроизводится, используя sp_track_offline_status. Но я не могу пройти через это.

Любой пример кода будет очень полезен.

Simplifying the requirement: загрузите и сохраните спойт-треки на устройствах iOS

В качестве обновления, в ответ на ответ iKenndac, свойство offlineStatus стало «1». Это означает, что плейлист синхронизирован для локального хранения.

SP_PLAYLIST_OFFLINE_STATUS_YES = 1, /// & lt; Плейлист синхронизирован с локальным хранилищем

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;

Я никогда не получал offlineStatus 2 или 3.

Also my offlineDownloadProgress property is always showing me '0'.
It has to increase from '0' to '1', if I am not wrong.

CODE snippet:

[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];

I am checking the status as follows:

-(void)checkOfflineStatus {

  NSLog(@"playlist offline progress is: %f",currentPlaylist.offlineDownloadProgress);

  NSLog(@"offline status: %d",currentPlaylist.offlineStatus);

}

The output looks like this:

2012-07-06 20: 34: 05.891 Simple Player [6571: 10703] плейлист В автономном режиме, прогресс: 0.000000

2012-07-06 20: 34: 05.892 Простой игрок [6571: 10703] офлайн статус: 1

2012-07-06 20: 34: 06.039 Простой игрок [6571: 10703] плейлиста офлайн прогресс: 0.000000

2012-07-06 20: 34: 06.039 Простой игрок [6571: 10703] офлайн статус: 1

Что я могу делать дальше?

Ответы на вопрос(1)

Решение Вопроса

скажем, файлов MP3 или чего-либо другого для независимого воспроизведения.

Тем не менее, вы можете иметь дорожки кэша библиотеки для автономного воспроизведения позже, пока пользователь остается подключенным к CocoaLibSpotify, как это делает клиент iOS Spotify.

SPPlaylist имеетmarkedForOfflinePlayback свойство для включения автономного доступа, затемofflineDownloadProgress а такжеofflineStatus свойства плейлиста дают больше информации.

CocoaLibSpotify поставляется с примером приложения Mac, который кэширует плейлисты для автономного воспроизведения, чтобы посмотреть, как это работает. API доступен и одинаков для обеих версий CocoaLibSpotify для Mac OS X и iOS.

 revanth09 июл. 2012 г., 11:48
можете ли вы опубликовать ссылку для примеров приложений Mac (и название примера приложения) для автономного воспроизведения. Я искал тех, но тщетно.
 09 июл. 2012 г., 13:58
github.com/spotify/cocoalibspotify - клонировать репо, проект находится вMac Framework/Sample Projects/Offline Playlists.
 02 сент. 2014 г., 20:18
Будет ли это справедливо и для iOS SDK? В TOS локальное кэширование, по-видимому, запрещено, если только пользователь не является пользователем Premium Spotify Service. Как вы заметили, пользователь может оставаться в системе CocoaLibSpotify. Надеюсь подтвердить это, прежде чем пройти через множество исследований и разработок. Спасибо Дэн

Ваш ответ на вопрос