我正在尝试使用 SoundCloud API 来流式传输歌曲,并且通过浏览器一切正常,但是当我尝试将其与 PhoneGap 打包并将其安装在手机上时,它不再工作。
问题似乎出在
SC.get()
函数上。 SC.initialize()
工作正常,但是当我尝试获取曲目时,每次安装在手机上时它都会返回 0 结果。这是我正在使用的代码:
SC.get('/tracks', {q: query, filter: 'streamable' }, function(tracks){
Ext.each(tracks, function(track){
if(track.streamable){
results.push(track);
}
});
if(results.length > 0){
var tracksStore = Ext.getStore('Tracks');
tracksStore.removeAll();
tracksStore.sync();
tracksStore.setData(results);
}
else
{
Ext.Msg.alert('No tracks found!', 'Try something different.');
}
});
该函数在初始化函数之后立即调用。有什么想法吗?
您必须使用
SC.stream()
功能。所以,你可以这样做:
SC.initialize({
client_id: "YOUR_CLIENT_ID"
});
SC.stream("/tracks/293", function(sound){
sound.play();
}
您可以这样做来获取特定用户的曲目:
SC.initialize({
client_id: "YOUR_CLIENT_ID"
});
//Select the song in the list you want to play
var songNumber=1;
//Get tracks from a user
SC.get('/users/8030565/tracks/', function(tracks) {
for (var i=0;i<tracks.length; ++i){
tracksList.push(tracks[i]);
}
//Stream a track
SC.stream("/tracks/"+tracksList[songNumber].id, function(sound){
sound.play();
}
}
希望这有帮助! 阅读文档,一段时间后它会变得更简单。
问题在于,当它安装在手机上时,没有返回任何内容,SC.get 只是不会返回任何曲目,因此它肯定无法流式传输它们。事实证明,无论出于何种原因,当通过phonegap在手机上安装时,您必须使用完整路径:api.soundcloud.com/tracks而不仅仅是/tracks/,否则它将无法工作。不知道为什么会出现这种情况,但这为我解决了问题。