Получение плейлистов пользователя и возможность выбрать из них песню

Вот что я пробовал до сих пор: - (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);
    }];}];

}

Все посты туториалов/stackoverflow, которые я гуглил, предназначены для веб-проектов, но я пытаюсь сделать это в iOS.

Мне действительно нужно сделать запрос к API дважды.

1) когда пользователь входит в свою учетную запись Spotify

2) когда пользователь нажимает кнопку "звуки" и он тянет свои плейлисты/треки.

Любая помощь iOS будет очень полезна.


person Charles Kang    schedule 12.02.2016    source источник


Ответы (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
    {

    }
}

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

person SRI    schedule 22.02.2016