订阅 Sonos 的活动 API
Subscribing to events with Sonos API
我正在使用 Sonos API 使用 Swift 构建 Sonos iPhone 应用程序,但遇到了绊脚石。当有人使用不同的应用程序或硬件按钮时,我想检测我的应用程序上的 state/volume / 元数据何时发生变化。我相信订阅事件是前进的方向。我已经在下面的参考 link 中复制了。
- 订阅 - 订阅组命名空间以在状态更改时接收事件,例如音量或播放状态的更改。
https://developer.sonos.com/build/direct-control/connect/
我按照描述向订阅路径发送了一个 HTTP POST 并收到了 200 ok 响应,但不知道下一步该做什么。我一直在使用 Xcode 并在 Postman 中进行测试。回调 url 已在开发者网站上注册并且 OAuth 令牌已验证。
如有任何帮助,我们将不胜感激。
谢谢,保罗
您必须托管服务才能接收事件。您的服务器应满足所有这些要求:
- 至少支持具有持久连接(“keep-alive”)的 HTTP 1.1。这对于维持 Sonos 和您的客户之间来回的数据流很重要。
- 使用 SSL/TLS v1.2 支持安全 HTTP。
- 为 DNS 名称提供有效且可信的 CA 签名 X.509 证书。
您的事件服务还应该验证它收到的每个事件的 X-Sonos-Event-Signature。有关详细信息,请参阅 Sonos 开发人员门户上的 Subscribe。
在 Control integration 的表单字段中输入您的回调 URL。
当您订阅的命名空间中的状态发生变化时,您应该会收到一个 HTTP POST 到您的回调 URL。例如,如果您订阅了一个组的 groupVolume 命名空间,那么当组音量发生变化时,您应该会收到一个组音量事件。尝试在 Sonos 应用程序中更改群组音量并确认您的回调 URL 收到事件。
这是文档中的示例组音量事件,在音量状态更改后发送:
POST {YOUR_CALLBACK_BASE_URL} HTTP/1.1
Content-Type: application/json
Content-Length: 41
X-Sonos-Household-Id: Sonos_1234567890
X-Sonos-Event-Seq-Id: 1234
X-Sonos-Event-Signature: 90192js8cjhvd7ebcjsfdfw
X-Sonos-Namespace: groupVolume
X-Sonos-Type: groupVolume
X-Sonos-Target-Type: groupId
X-Sonos-Target-Value: RINCON_00012345678001400:0
{"volume":16,"muted":false,"fixed":false}
我正在使用 Sonos API 使用 Swift 构建 Sonos iPhone 应用程序,但遇到了绊脚石。当有人使用不同的应用程序或硬件按钮时,我想检测我的应用程序上的 state/volume / 元数据何时发生变化。我相信订阅事件是前进的方向。我已经在下面的参考 link 中复制了。
- 订阅 - 订阅组命名空间以在状态更改时接收事件,例如音量或播放状态的更改。
https://developer.sonos.com/build/direct-control/connect/
我按照描述向订阅路径发送了一个 HTTP POST 并收到了 200 ok 响应,但不知道下一步该做什么。我一直在使用 Xcode 并在 Postman 中进行测试。回调 url 已在开发者网站上注册并且 OAuth 令牌已验证。
如有任何帮助,我们将不胜感激。
谢谢,保罗
您必须托管服务才能接收事件。您的服务器应满足所有这些要求:
- 至少支持具有持久连接(“keep-alive”)的 HTTP 1.1。这对于维持 Sonos 和您的客户之间来回的数据流很重要。
- 使用 SSL/TLS v1.2 支持安全 HTTP。
- 为 DNS 名称提供有效且可信的 CA 签名 X.509 证书。
您的事件服务还应该验证它收到的每个事件的 X-Sonos-Event-Signature。有关详细信息,请参阅 Sonos 开发人员门户上的 Subscribe。
在 Control integration 的表单字段中输入您的回调 URL。
当您订阅的命名空间中的状态发生变化时,您应该会收到一个 HTTP POST 到您的回调 URL。例如,如果您订阅了一个组的 groupVolume 命名空间,那么当组音量发生变化时,您应该会收到一个组音量事件。尝试在 Sonos 应用程序中更改群组音量并确认您的回调 URL 收到事件。
这是文档中的示例组音量事件,在音量状态更改后发送:
POST {YOUR_CALLBACK_BASE_URL} HTTP/1.1
Content-Type: application/json
Content-Length: 41
X-Sonos-Household-Id: Sonos_1234567890
X-Sonos-Event-Seq-Id: 1234
X-Sonos-Event-Signature: 90192js8cjhvd7ebcjsfdfw
X-Sonos-Namespace: groupVolume
X-Sonos-Type: groupVolume
X-Sonos-Target-Type: groupId
X-Sonos-Target-Value: RINCON_00012345678001400:0
{"volume":16,"muted":false,"fixed":false}