2017-05-04 2 views
2

ci-après le bout de code qui est suspendu:Pourquoi Spotify iOS SDK est-il suspendu indéfiniment sur SPTAudioStreamingController.login()?

DispatchQueue.main.async { 
       log.info("User is a premium user. Logging into player.") 
       self.player?.login(withAccessToken: self.session!.accessToken) 
       log.info("Logged into player.") 
      } 

Quelques notes:

  • L'utilisateur est connecté avec un compte utilisateur premium et un jeton OAuth valide.
  • Dans une base de code précédente, cela a fonctionné.
  • Il fonctionne sur main.async car dans une base de code précédente où cela fonctionnait, je fonctionnais sur cette DispatchQueue.
  • L'exécuter sur le même thread, sans le async {} ne fonctionne pas non plus.
  • La création d'une nouvelle DispatchQueue, exécutée dans la file d'attente en tant qu'async, ne fonctionne pas non plus. Selon le débogueur, il est suspendu au sous-ensemble .

Toute aide, ou même juste des idées à long terme sur ce qui pourrait causer ce serait grandement appréciée.

+0

quelle version du sdk utilisez-vous? Avez-vous essayé de ne pas spécifier le fil? –

+0

Dans la version non-travail, j'utilise 0.25.0. Je ne suis pas certain de la version dans le code de travail, mais il peut être plus ancien. J'ai essayé de ne pas spécifier le fil, pas de différence. –

Répondre

1

Je crois qu'il vous manque un appel avant la connexion qui est important. Vous devez d'abord appeler la méthode start(withClientId:).

do { 
    try self.player?.start(withClientId: clientID) 
    } catch { 
    log("Failed to start with clientId") 
    } 

Dans la documentation, appelant la méthode de démarrage:

"Démarrer le fil SPAudioStreamingController avec la valeur par défaut audioController."

Ce qui explique pourquoi il serait accroché au dispatchToAudioThread