SPTTrack trackWithURI 问题
SPTTrack trackWithURI issue
我创建了一个获取歌曲轨道的新项目,所以我尝试将一组 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 but I had found that one developer had already posted the same issue link.
如果有人解决了此类问题,请提供指导。
在此先致谢。
很遗憾,这个方法不是"equivalent",因为在[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"的详细解释。
我创建了一个获取歌曲轨道的新项目,所以我尝试将一组 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 but I had found that one developer had already posted the same issue link.
如果有人解决了此类问题,请提供指导。
在此先致谢。
很遗憾,这个方法不是"equivalent",因为在[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"的详细解释。