获取用户的播放列表并能够从中选择歌曲



这是我到目前为止尝试过的: - (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);
    }];}];

}

我用谷歌搜索过的所有教程/堆栈溢出帖子都是针对Web项目的,但我正在尝试在iOS中执行此操作。

我只需要向 API 发出两次请求。

1) 當使用者使用其 Spotify 帳戶登入時

2)当用户按下"声音"按钮并提取其播放列表/曲目时。

任何iOS帮助都将非常有帮助。

我正在使用以下内容来获取专辑并尝试从播放列表中选取一首歌曲。它工作正常。

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

如果您需要更多详细信息,请告诉我。

相关内容

  • 没有找到相关文章

最新更新