質問は非常に単純に聞こえますが、トラック uri が正しいかどうかを確認する方法が見つかりませんでした。
たとえば、特定の有効なトラック uri spotify:track:5Z7ygHQo02SUrFmcgpwsKWでトラックを再生する通常の手順は次のとおりです。
1) sp_link_create_from_string(const char *$track_uri) で sp_link* を取得
2) sp_link_as_track(sp_link*) で sp_track* を取得する
3) sp_track_add_ref(sp_track*)
4) sp_track_error() が SP_ERROR_OK、または SP_ERROR_IS_LOADING を返し、metadata_updated と SP_ERROR_OK を返した場合、sp_session_player_load と sp_session_player_play がトラックをロードして再生します。
5) sp_track_release() および sp_session_player_unload() がトラックの最後にある場合。
ここで、ユーザーが Spotify のトラック URI にタイプミスをして、Spotify:track:5Z7ygHQo02SUrFmcgpwsKQを再生しようとした場合(最後の文字Qはタイプミスであり、 Wである必要があります)。手順中に発生する可能性のあるすべてのエラー チェックでは、エラーは返されません。
ステップ 1) sp_link が NULL ではない
ステップ 2) sp_track* は NULL ではありません
ステップ 3) SP_ERROR_OK を返す
ステップ 4) sp_track_error() は SP_ERROR_IS_LOADING を返し、metadata_updated は呼び出されず、もちろんプログラムはハングします。
トラックがロードされる前のチェックでは、トラック uri の無効性を見つけることができません。API sp_track_availabilityは方法のように聞こえますが、トラックがロードされていない場合は常に NOT AVAILABLE を返しますが、トラック uri が正しくない場合、トラックは決してロードされません。
何かを見逃したり、API を誤解したりしましたか?