如何用Spotify-iOS SDK将播放曲目保存至用户Your Music库?含代码问题
实现Spotify曲目保存到Your Music的IBAction方案
我来帮你补全并优化这个保存曲目到Your Music的IBAction代码,顺便理清楚整个流程的关键点,避免踩坑:
完整的IBAction代码
- (IBAction)saveTrackToMyMusic:(id)sender { // 1. 通过曲目URI获取SPTTrack实例 [SPTTrack trackWithURI:[NSURL URLWithString:self.spotifyUrl] accessToken:self.session.accessToken market:nil callback:^(NSError *error, SPTTrack *track) { // 处理获取曲目信息的错误 if (error) { NSLog(@"获取曲目详情失败:%@", error.localizedDescription); // 这里可以给用户弹个提示框告知失败 return; } // 2. 获取当前登录用户的信息 [SPTUser requestCurrentUserWithAccessToken:self.session.accessToken callback:^(NSError *error, SPTUser *currentUser) { if (error) { NSLog(@"获取当前用户信息失败:%@", error.localizedDescription); return; } // 3. 核心步骤:把曲目添加到用户的Your Music库 [SPTYourMusic addTracks:@[track.uri] toLibraryForUser:currentUser accessToken:self.session.accessToken callback:^(NSError *error) { if (error) { NSLog(@"保存曲目失败:%@", error.localizedDescription); } else { NSLog(@"曲目已成功存入Your Music!"); // 只有保存成功后,再更新本地的tracksArray,保证数据一致性 [self.tracksArray addObject:track]; // 如果用列表展示曲目,记得刷新UI [self.tableView reloadData]; } }]; }]; }]; }
关键注意事项
- 错误处理不能少:每个异步回调都加了错误判断,避免因网络问题、token过期等情况导致崩溃或无反馈
- 数据一致性:只有当云端保存成功后,再把track加到本地的
tracksArray里,不然本地显示已保存但实际云端没存上,会造成用户困惑 - URI格式要正确:
self.spotifyUrl必须是标准的Spotify曲目URI,格式类似spotify:track:123456789abc,不能是网页链接 - 权限检查:确保你的Spotify开发者应用已经申请了
user-library-modify权限,不然会保存失败
另外,别忘了导入Spotify的头文件:
#import <SpotifyiOS/SpotifyiOS.h>
内容的提问来源于stack exchange,提问作者Austin Berenyi
相关产品推荐
相关产品推荐

