2012-04-07 12 views
0

Ich entwickle für Spotify (JavaScript) auf einem OSX-Computer und die Anwendung stürzt ab, wenn ich versuche, einen Song abzuspielen.Spotify stürzt ab, wenn player.play (songURI) verwendet wird

Der Anruf, den ich an die API zu machen ist: player.play(trackURI);

Was passiert, ist, dass das Spotify-Client für etwa 1/4-Sekunden des Lied spielen wird, dann wird es zum Absturz bringen. Ich glaube, es ist diese Methode, die den Client abstürzt, wie ich es bis zu diesem Punkt getestet habe.

Wenn Sie weitere Informationen benötigen und wissen, warum dies passieren könnte, freue ich mich auf eine Antwort.


Weitere Informationen:

So habe ich es geschafft, es zu wiederholen. Was passiert ist, dass ich mich für die Veranstaltung wie folgt registriert habe: player.observe(models.EVENT.CHANGE, function (e) {

Wenn das Lied endet und ein neues beginnt, möchte ich das nächste Lied in meiner falschen Warteschlange spielen. Daher rufe ich player.play(nextSongId), wenn die EVENT.CHANGE mit e.data.curtrack == true ausgelöst wird.

Dann Spotify versucht, das nächste Lied in seiner Warteschlange zu spielen, aber dann möchte ich mein eigenes nächstes Lied spielen, so dass Spotify abstürzt.

+0

Könnten Sie ein Code-Snippet zur Verwendung des Player-Objekts bereitstellen? Sie können auch ein Protokoll darüber bereitstellen, was der Client zum Zeitpunkt der Ausführung ausführt. Führen Sie console.app aus und filtern Sie nach Spotify. – pompa

+0

@pompa, scheint, als würde es nicht mehr krachen. Ich bin mir nicht sicher, was ich getan habe, um das zu "reparieren". Ich hätte player.play (trackuri) genannt, wenn ein Track bereits gespielt hat. Nicht sicher, obwohl ... – Andrei

+0

@pompa, finden Sie in der aktualisierten Beschreibung des Problems für weitere Informationen. Prost! – Andrei

Antwort

0

Nach einigen Fixierung auf, ich denke, das passiert, weil ich player.play rief (trackURI) fast unmittelbar nachdem ich es schon einmal angerufen hatte. Dies passierte, weil ich einen Song änderte, der das Ereignis EVENT.CHANGE ausgelöst hatte, und dann rief ich player.play() erneut an. Sehen Sie sich den Code an, um sich mit Änderungen am Song vertraut zu machen.

player.observe(models.EVENT.CHANGE, function (e) { 

    // Only update the page if the track changed 
    if (e.data.curtrack == true && !justChangedSong) { 
     var songId = queue.shift(); 
     if (songId != null) 
     { 
      player.play(songId); 
      justChangedSong = true; 
     } 
    } 
    else if (justChangedSong) 
    { 
     justChangedSong = false; 
    } 
}); 

Auch, wenn Sie auf eine Schaltfläche namens „Nächstes Lied“ oder so haben, schließen Sie es an die playNextSong() Methode:

function playNextSong() 
{ 
    var songId = queue.shift(); 
    if (songId != null) 
    { 
     player.play(songId); 
     justChangedSong = true; 
    } 
} 

Scheint wie Spotify ist nicht mehr abstürzt. Prost!

1

Ich denke, das Problem ist, dass dein Beobachter immer wieder aufgerufen wird, wenn du Spotify sagst, deinen nächsten Track zu spielen. Jedes Mal, wenn du player.play spielst, wird ein weiterer EVENT.CHANGE ausgelöst, und du wirst versuchen, den Track erneut abzuspielen.

Um dies zu verifizieren, versuchen Sie es mit einem console.log("playing next track") und sehen Sie sich die js-Konsole an, um zu sehen, ob es passiert.

Wenn ja, versuchen, einen Scheck zu tun, um zu sehen, ob player.track.uri === queue[index].uri und wenn falsch ist, dann wird der nächste Titel in der Warteschlange

spielen
+0

Ja, gute Idee. Ich habe das ebenfalls bemerkt und es mit einer Bool-Variablen gelöst. Ich werde es trotzdem versuchen. Obwohl, das sollte eigentlich kein Problem verursachen. Der Spieler sollte nur den gleichen Song immer und immer wieder spielen, aber nicht abstürzen. – Andrei

Verwandte Themen