メソッドを使用してプレイリストをリクエストすると、Spotify iOS SDK Beta 5 を使用します。
[SPTRequest playlistsForUserInSession:self.session callback:^(NSError *error, id object) {
self.playlists = ((SPTListPage*)object).items;
}];
Spotify デスクトップ アプリが同化したネイティブの Spotify と iTunes プレイリストの両方を含むリストが返されます。リスト エントリには、あいまいさを解消するものは何もありません。次のようなコードを使用して iTunes プレイリストの 1 つを再生しようとすると:
[SPTRequest requestItemAtURI:uri
withSession:session
callback:^(NSError *error, id object) {
if (error != nil) {
NSLog(@"*** got error %@", error);
return;
}
[self.streamer playTrackProvider:object callback:^(NSError *error) {
NSLog (@"*** reached callback");
}];
}];
Spotify SDK でアプリがクラッシュし、次のエラーが表示されます。
-[NSNull caseInsensitiveCompare:]: unrecognized selector sent to instance 0x198ba9fe0
そしてこのスタックトレース:
Thread 10, Queue : com.apple.root.default-priority
#0 0x000000019816c1c0 in objc_exception_throw ()
#1 0x000000018bc67db4 in -[NSObject(NSObject) doesNotRecognizeSelector:] ()
#2 0x000000018bc65ae0 in ___forwarding___ ()
#3 0x000000018bb8578c in _CF_forwarding_prep_0 ()
#4 0x0000000100099d40 in -[SPTPartialAlbum initWithDecodedJSONObject:error:] at /Users/po/Projects/ios-sdk/src/SPTPartialAlbum.m:85
#5 0x00000001000a6578 in +[SPTJSONDecoding SPObjectFromDecodedJSON:collection:error:] at /Users/po/Projects/ios-sdk/src/SPTJSONDecoding.m:95
#6 0x000000010008bd2c in -[SPTTrack initWithDecodedJSONObject:error:] at /Users/po/Projects/ios-sdk/src/SPTTrack.m:83
#7 0x000000010008a350 in -[SPTPlaylistTrack initWithDecodedJSONObject:error:] at /Users/po/Projects/ios-sdk/src/SPTPlaylistTrack.m:44
#8 0x00000001000a6578 in +[SPTJSONDecoding SPObjectFromDecodedJSON:collection:error:] at /Users/po/Projects/ios-sdk/src/SPTJSONDecoding.m:95
#9 0x0000000100096ebc in -[SPTListPage initWithDecodedJSONObject:expectingPartialChildren:rootObjectKey:] at /Users/po/Projects/ios-sdk/src/SPTListPage.m:84
#10 0x000000010008fcac in -[SPTPlaylistSnapshot initWithDecodedJSONObject:error:] at /Users/po/Projects/ios-sdk/src/SPTPlaylistSnapshot.m:137
#11 0x00000001000a6578 in +[SPTJSONDecoding SPObjectFromDecodedJSON:collection:error:] at /Users/po/Projects/ios-sdk/src/SPTJSONDecoding.m:95
#12 0x00000001000a1664 in __56+[SPTRequest requestPlaylistAtURI:withSession:callback:]_block_invoke at /Users/po/Projects/ios-sdk/src/SPTRequest.m:595
#13 0x0000000198744014 in _dispatch_call_block_and_release ()
#14 0x0000000198743fd4 in _dispatch_client_callout ()
#15 0x000000019874b2b8 in _dispatch_root_queue_drain ()
#16 0x000000019874b4fc in _dispatch_worker_thread2 ()
#17 0x00000001988d96bc in _pthread_wqthread ()
ネイティブの Spotify プレイリストは正常に再生されます。
ヘルプ!これに対する回避策はありますか? プレイリストを要求するときに、iTunes プレイリストが SDK によって返されるべきではないと思います。または、どのプレイリストが iTunes ベースであるかを判断するために使用できるものを教えてください。そうすれば、iOS アプリのユーザーからそれらを隠すことができます。または、SDK を再生しようとしてクラッシュしないようにします。
Spotify SDK 開発者: 助けて!? 以前の SDK は iTunes のプレイリストを表示していましたが、requestItemAtURI を介してプレイリストをリクエストしてもクラッシュしませんでした。