2017-05-04 87 views
2

以下是挂代码片段:为什么Spotify iOS SDK无限期地挂在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.") 
      } 

的几个注意事项:

  • 用户与高级用户帐户登录,并且有效的OAuth令牌。
  • 在以前的代码库中,这工作。
  • 它在main.async上运行,因为在之前的代码库中,这是工作的,我在DispatchQueue上运行。
  • 在同一个线程上运行它,没有async {}也不起作用。
  • 创建一个新的DispatchQueue,在队列上以async身份运行它也不起作用。
  • 根据调试器,它挂在subcall SPTAudioStreamingController.dispatchToAudioThread上。

任何帮助,或者甚至只是对可能造成这种情况的长期想法,将不胜感激。

+0

什么版本您使用的挂?你有没有试过不指定线程? –

+0

在非工作版本中,我使用的是0.25.0。我不确定工作代码中的版本,但可能会更老。我试过不指定线程,没有区别。 –

回答

1

我相信您在登录之前缺少一个呼叫,这很重要。您需要先拨打start(withClientId:)方法。

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

在本文档中调用start方法:

“使用默认 audioController启动SPAudioStreamingController线。”

这就解释了为什么它会在SDK的dispatchToAudioThread

相关问题