Я уже некоторое время борется с этим и оглядывался за советом от любого, кто работал с CocoaLibSpotify на iOS (точнее, iOS 7).Элементы SPPlaylist как SPTracks не загружаются (последовательно)
Я пытаюсь загрузить все элементы (SPTrack) в список SPPlaylist. Я просмотрел пример кода и документацию, поэтому я знаю, что лучший способ наблюдать за вещами - с KVO, однако я не вижу, как это лучший способ.
Глядя на «Угадай Into» пример и другие источники на GitHub и в Интернете в целом, прецессию я делаю это следующим образом:
- Получить SPPlaylist (это либо непосредственно из пользователи плейлисты или созданные из сохраненного URL)
- Загрузите плейлист с SPAsyncLoading,
- Loop хотя SPPlaylistItems вернулся в SPPlaylist и получить все объекты SPTrack,
- Передайте массив SPTrack объектов в другую SPAsyncLoading звонок,
- Показать все элементы из массива
loadedItems
.
Шаг 5 - это то, что кажется неправильным. Иногда это нормально, и я получаю все треки в отображении списка воспроизведения. Однако большую часть времени он не загружает их или загружает только несколько (обычно очень мало).
Я заметил, что перезапуск телефона иногда может заставить его работать. Хотя после запуска приложения (или изменения плейлиста) пару раз, он перестает работать снова.
Когда я вхожу каждый шаг я получаю что-то вроде следующего:
-[ViewController sessionDidLoginSuccessfully:]
Load playlist with URL: spotify:user:XXXXX:playlist:XXXXXXXXXXXXXXXXXXXXXX
Created playlist: <SPPlaylist: 0x16775bc0>: (null) (0 items)
Loaded playlist: <SPPlaylist: 0x16775bc0>: Playlist Name (59 items)
Created SPTrack items: 59
Loaded SPTrack items: 1
Failed to load SPTrack items: 58
Как вы можете видеть, пользователь вошел в систему с действительным сессии. Каждый шаг работает в соответствии с планом до конца. Иногда, даже если он загружает трек, он не позволит мне играть в него так же, как и возвращение SP_TRACK_AVAILABILITY_UNAVAILABLE
.
Я также добавил ниже фрагмент кода, если это поможет. Но любая помощь была бы признательна с этой точки зрения.
Спасибо.
- (void)loadPlaylist
{
__weak NSURL *spotifyURL = <URL from saved SPPlaylist>;
NSLog(@"Load playlist with URL: %@", spotifyURL);
[SPPlaylist playlistWithPlaylistURL:spotifyURL inSession:[SPSession sharedSession] callback:^(SPPlaylist *playlist) {
_spotifyPlaylist = playlist;
NSLog(@"Created playlist: %@", _spotifyPlaylist);
[SPAsyncLoading waitUntilLoaded: _spotifyPlaylist timeout:kSpotifyTimeout then:^(NSArray *loadedItems, NSArray *notLoadedItems) {
NSLog(@"Loaded playlist: %@", _spotifyPlaylist);
if ([loadedItems count] > 0)
[self loadSpotifyPlaylist];
}];
}];
}
- (void)loadSpotifyPlaylist
{
NSArray *tracksArray = [self tracksFromPlaylistItems:[_spotifyPlaylist items]];
NSLog(@"Created SPTrack items: %d", [tracksArray count]);
if (tracksArray && [tracksArray count] > 0)
{
[SPAsyncLoading waitUntilLoaded:tracksArray timeout:kSpotifyTimeout then:^(NSArray *loadedItems, NSArray *notLoadedItems) {
_playlist = loadedItems;
NSLog(@"Loaded SPTrack items: %d", [loadedItems count]);
NSLog(@"Failed to load SPTrack items: %d", [notLoadedItems count]);
[self finishReloadData];
}];
}
_spotifyPlaylist
и _playlist
strong
оба экземпляра и tracksFromPlaylistItems:
тот же метод, используемый в «Угадай Info» образец кода.
Редактировать: kSpotifyTimeout
таймаут установлен на 10.0
.
'kSpotifyTimeout' в настоящее время' 10.0'. То, что вы говорите, это то, что я думал, что это может быть. Я сделал таймаут до '200.0' один раз в небольшом плейлисте, но это не помогло. Я посмотрю на результаты поискового вызова и посмотрю, поможет ли это, хотя это, похоже, происходит даже с небольшими плейлистами. Спасибо за помощь. – Baza207
К сожалению, я все еще шов, чтобы иметь проблемы. Даже при загрузке 10 предметов за один раз я получаю только 1-2/10 предметов, возвращаемых в качестве загружаемых. Я пробовал несколько плейлистов, и получаю те же результаты. Любые другие предложения? – Baza207
Я видел, что API метаданных действует в течение последнего дня или около того. Вероятно, это временная проблема с обслуживанием. – iKenndac