Spotify Web浏览器按钮如何与Spotify应用程序交互?

时间:2012-10-28 20:41:27

标签: javascript browser controls spotify

使用javascript:spotify play button

查看完全看来的播放按钮

请注意,按下播放将导致Spotify开始播放音乐。好吧,我认为这是通过一些特定于应用程序的协议链接(如spotify:// play)完成的,尽管我可能错了。但疯狂的部分是,如果你停止在Spotify中播放音乐,该按钮将在浏览器中更新,以显示音乐已停止播放!这有什么作用?

您可以查看其source here

3 个答案:

答案 0 :(得分:4)

桌面在您的计算机上*.spotilocal.com运行服务器,然后在网络上,嵌入播放器(example)将选择子域名(例如:fdxubmxkqp.spotilocal.com)。

然后它向本地服务器的API发出请求,例如:

https://fdxubmxkqp.spotilocal.com:4370/service/version.json
https://fdxubmxkqp.spotilocal.com:4370/simplecsrf/token.json

它只返回一些JSON:

{
"version": 9, 
"client_version": "1.0.10.107.gd0dfca3a"
}

有关详细信息,请参阅this screenshot,或者您可以转到news.spotify.com并使用带有spotilocal的网络检查器作为过滤器来获取相同的信息。

enter image description here

答案 1 :(得分:3)

(注意,这不是他们实际上如何做到的,但对于那些希望实现类似功能的人来说,它仍然是一个有效的答案)

使用自定义协议内容处理程序

它注册了一个自定义协议内容处理程序。您可以通过浏览器为任何"web-*"协议注册协议,以使您的网站处理该协议,但您也可以在安装时注册协议。 (这就是Spotify的工作方式)。在这里看到这篇文章:

Registering an Application to a URL Protocol

您的浏览器可以配置为识别某些处理程序。

我不确定每个浏览器是如何做到的,我认为它适用于Internet Explorer的注册表级别,如上面链接的文章。

无论如何,在Chrome和Firefox中,有一个用于注册协议的window.navigator.registerProtocolHandler功能。

见这里:https://developer.mozilla.org/en-US/docs/DOM/navigator.registerProtocolHandler

另外,请查看brief article。 (尽管信息非常稀少)


Chrome 13最终包含navigator.registerProtocolHandler。此API允许Web应用程序将自己注册为特定协议的可能处理程序。例如,用户可以选择您的应用程序来处理“mailto”链接。

注册协议方案,如:

navigator.registerProtocolHandler(
    'web+mystuff', 'http://example.com/rph?q=%s', 'My App');

如果我在答案中没有明确说明,我提供了有关Web应用程序如何注册自己的协议的信息,以及桌面应用程序如何注册新协议的信息。 (任何Web应用程序都需要以web-*为前缀以避免安全问题)

答案 2 :(得分:3)

spotify播放按钮长时间轮询(通过HTTPS)在localhost上运行的spotify应用程序以更新状态。