我可以用用户名和密码登录时,互联网连接。如果我在登录时断开网络,我仍然可以听离线列表。如果我重新连接互联网,我就可以再次获得完整的功能,而无需采取任何行动。
但是当网络不可用时,当我启动我的应用程序时,我无法登录以收听离线曲目。
我已经尝试登录blob而不是密码没有成功(有或没有互联网)。我也试过用"rememberme",但它似乎不能在我的应用程序重新启动后存活。
我尝试过空字符串(")以及IntPtr。
密码为零,blob为零。没有成功。我做错了什么?
我认为@Kendall Frey一刀直入,libspotify实现了离线支持,但你可能至少需要在线才能开始。Spotify的移动和桌面客户端并非如此,但它们并不是基于libspotify构建的。很抱歉,我不认为有任何方法可以绕过这个限制。
离线登录应该在以下条件下使用凭据blob在libspotify中实际工作:
- 用户至少在线成功登录过一次。
- 允许libspotify创建并维护磁盘缓存。 libspotify能够正确地将凭证写入缓存并在下次验证它们。
- 允许libspotify在应用程序退出时进行清理是正确的。
缓存是这里的重要部分。你必须给libspotify传递一个可读可写的磁盘位置。
还有非常重要的是正确退出。您必须注销用户并在应用程序退出时等待该进程完成,或者调用flush_caches()
并等待该进程完成。否则,libspotify将无法正确写入缓存以启用离线登录。如果你只是退出你的进程没有适当的libspotify清理,离线登录将无法工作。
你说得完全正确!事实上,问题出在键盘后面,因为我被连接状态和登录回调的sp_error弄糊涂了。
我确实成功登录了,就像我连接时一样。
有用户名、密码和"记住我"。混乱来自api.h
中的注释SP_CONNECTION_STATE_LOGGED_OUT = 0,///<用户尚未登录>用户尚未登录>
SP_CONNECTION_STATE_LOGGED_IN = 1,///<登录到一个Spotify接入点>登录到一个Spotify接入点>
SP_CONNECTION_STATE_DISCONNECTED = 2,///<已登录,但现在已断开连接>
SP_CONNECTION_STATE_UNDEFINED = 3,///<连接状态未定义>连接状态未定义>
SP_CONNECTION_STATE_OFFLINE = 4///<以离线模式登录>以离线模式登录>
当我启动我的应用程序没有互联网连接时,我首先得到登录回调说SP_ERROR_OK,然后我得到SP_CONNECTION_STATE_DISCONNECTED(已登录,但现在已断开)
我期望SP_CONNECTION_STATE_OFFLINE(在脱机模式下登录)没有连接到互联网。
但是