Получение плейлистов пользователя и возможность выбрать из него песню
Вот что я попробовал до сих пор: - (IBAction) getPlaylistsButtonTapped: (id) sender {
NSURLRequest *playlistrequest = [SPTPlaylistList createRequestForGettingPlaylistsForUser:@"charleshyowonkang" withAccessToken:_accessToken error:nil]; [[SPTRequest sharedHandler] performRequest:playlistrequest callback:^(NSError *error, NSURLResponse *response, NSData *data) {
if (error != nil) { NSLog(@"error");
}
SPTPlaylistList *playlists = [SPTPlaylistList playlistListFromData:data withResponse:response error:nil];
NSLog(@"Got possan's playlists, first page: %@", playlists);
NSURLRequest *playlistrequest2 = [playlists createRequestForNextPageWithAccessToken:_accessToken error:nil];
[[SPTRequest sharedHandler] performRequest:playlistrequest2 callback:^(NSError *error2, NSURLResponse *response2, NSData *data2) {
if (error2 != nil) {
NSLog(@"error2");
}
SPTPlaylistList *playlists2 = [SPTPlaylistList playlistListFromData:data2 withResponse:response2 error:nil];
NSLog(@"Got possan's playlists, second page: %@", playlists2);
}];}];
}
Все учебники / сообщения от stackru, которые я нашел, предназначены для веб-проектов, но я пытаюсь сделать это в iOS.
Мне только действительно нужно сделать запрос к API дважды.
1) когда пользователь входит в систему со своей учетной записью spotify
2) когда пользователь нажимает кнопку "звуки" и он тянет свои плейлисты / треки.
Любая помощь iOS будет очень полезна.
1 ответ
Я использую ниже для получения альбомов и пытаюсь выбрать одну песню из списка воспроизведения. Работает нормально.
[SPTRequest playlistsForUserInSession:auth.session callback:^(NSError *error, SPTListPage *list){
if (error != nil) {
UIAlertView *view = [[UIAlertView alloc] initWithTitle:@"Getting User Info Failed"
message:error.userInfo[NSLocalizedDescriptionKey]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[view show];
return;
}
//[spotifyPlaylistsArr addObjectsFromArray:list.items];
[self getFullPlaylistPage:list];
}];
-(void)getFullPlaylistPage:(SPTListPage*)listPage {
if (listPage.hasNextPage) {
[listPage requestNextPageWithSession:[SPTAuth defaultInstance].session callback:^(NSError *error, SPTListPage* playlistPage) {
if (error != nil) {
NSLog(@"*** Getting playlist page got error: %@", error);
return;
}
SPTListPage *listPage2 = [listPage pageByAppendingPage:playlistPage];
[self getFullPlaylistPage:listPage2];
}];
} else {
NSMutableArray* playlist = [[NSMutableArray alloc]init];
[self convertPlaylists:listPage arrayOfPlaylistSnapshots:playlist positionInListPage:0];
}
}
-(void)convertPlaylists:(SPTListPage*)playlistPage arrayOfPlaylistSnapshots:(NSMutableArray*)playlist positionInListPage:(NSInteger)position {
if (playlistPage.items.count > position) {
SPTPartialPlaylist* userPlaylist = playlistPage.items[position];
[SPTPlaylistSnapshot playlistWithURI:userPlaylist.uri session:[SPTAuth defaultInstance].session callback:^(NSError *error, SPTPlaylistSnapshot* playablePlaylist) {
if (error != nil) {
NSLog(@"*** Getting playlists got error: %@", error);
return;
}
if(!playablePlaylist){
NSLog(@"PlaylistSnapshot from call back is nil");
return;
}
[playlist addObject:playablePlaylist];
[self convertPlaylists:playlistPage arrayOfPlaylistSnapshots:playlist positionInListPage:position+1];
[spotifyPlaylistsArr removeAllObjects];
[spotifyPlaylistsArr addObjectsFromArray:playlist];
[spotifyPlaylists reloadData];
}];
}
else
{
}
}
Пожалуйста, дайте мне знать, если вам нужно больше деталей.