0

Here's what I've tried so far: - (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);
    }];}];

}

All the tutorials/stackoverflow posts I have googled are for web projects, but I am trying to do this in iOS.

I only really need to make a request to the API twice.

1) when a user logs in with their spotify account

2) when a user presses the "sounds" button and it pulls their playlists/tracks.

Any iOS help would be very helpful.

1 Answers1

0

I am using the below for getting the albums and trying to pick up one song from the playlist. It is working fine.

    [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
    {

    }
}

Please let me know if you need any more details.

SRI
  • 1,514
  • 21
  • 39