문제

I'm attempting to use the SoundCloud API to stream songs, and everything works fine through the browser, but when I attempt to package it with PhoneGap and install it on a phone it no longer works.

The problem seems to be with the SC.get() function. SC.initialize() is working fine, but when I try to get tracks it returns 0 results every time when installed on a phone. This is the code I am using:

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.');
            }

        });

This function is called right after the initialize function. Any ideas?

도움이 되었습니까?

해결책 2

The problem was that nothing was being returned when it was installed on a phone, SC.get just would not return any tracks so it certainly couldn't stream them. It turns out, for whatever reason, when installing on a phone through phonegap you have to use the full path: api.soundcloud.com/tracks and not just /tracks/ otherwise it wont work. Not sure why this is the case, but this fixed it for me.

다른 팁

You have to use the SC.stream() function. So, you can do it like this:

SC.initialize({
     client_id: "YOUR_CLIENT_ID"
});
SC.stream("/tracks/293", function(sound){
      sound.play();
}

And you can do it like this to get tracks from a specific user:

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();
     }
}

Hope this helps! Read the docs, it gets simpler after a while.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top