我创建了一个新项目,该项目可获取歌曲的曲目,因此我尝试将SPTTracks数组传递给播放器,请在下面找到它。
self.player = [[SPTAudioStreamingController alloc] initWithClientId:auth.clientID];
self.player.diskCache = [[SPTDiskCache alloc] initWithCapacity:1024 * 1024 * 64];
NSString *trackURI = @"spotify:track:1zHlj4dQ8ZAtrayhuDDmkY";
[SPTTrack trackWithURI:[NSURL URLWithString:trackURI] accessToken:auth.session.accessToken market:@"ES" callback:^(NSError *error, id object) {
if (!error) {
SPTTrack *trackInfo = object;
NSArray *tracks = @[trackInfo];
[self.player playURIs:tracks fromIndex:0 callback:^(NSError *error) {
if (!error) {
} else {
NSLog(@"*** Failed to play track : %@", error);
}
}];
} else {
NSLog(@"Error %@", error);
}
}];
但是,每当我运行它时,都会崩溃。崩溃时,请在下面找到错误:
Simple Track Playback[254:24669] -[__NSCFConstantString absoluteString]: unrecognized selector sent to instance 0x1000c0508
我也曾在spotify api spotify_ios_sdk上查看过它,但发现一个开发人员已经发布了相同的问题link。
如果有人解决了此类问题,请提供指导。
提前致谢。
最佳答案
不幸的是,此方法不是“等效的”,因为在 [SPTTrack trackWithURI .... 的回调内返回的SPTTrack对象的信息要少得多。
我尝试了一些解决方法,发现对我来说解决方案是
1)创建一个对SPTTrack对象的请求。
2)将该请求传递到SPRequest performRequest回调。
3)等待响应,并最终根据数据创建一个轨道(请找到下面的完整代码)。
self.player = [[SPTAudioStreamingController alloc] initWithClientId:auth.clientID];
self.player.diskCache = [[SPTDiskCache alloc] initWithCapacity:1024 * 1024 * 64];
NSString *market = [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode];
NSURLRequest *request = [SPTTrack createRequestForTrack:[NSURL URLWithString:@"spotify:track:1zHlj4dQ8ZAtrayhuDDmkY"]
withAccessToken:auth.session.accessToken
market:market
error:nil];
[[SPTRequest sharedHandler] performRequest:request
callback:^(NSError *error, NSURLResponse *response, NSData *data) {
if (!error) {
NSError *parsingError = nil;
SPTTrack *track = [SPTTrack trackFromData:data
withResponse:response
error:&parsingError];
self.arrURIs = @[track.playableUri];
[self.player playURIs:self.arrURIs fromIndex:0 callback:nil];
}
}];
感谢“Kry256”的详细说明。
关于ios - SPTTrack trackWithURI问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30981015/