gpt4 book ai didi

swift - 从 Sonos 回调 URL 将实时 json 数据发送到 Swift IOS 应用程序以订阅事件

转载 作者:行者123 更新时间:2023-11-30 10:38:17 24 4
gpt4 key购买 nike

我目前正在使用 Swift 构建 Sonos IOS 应用程序以包含 Today Widget。该应用程序将控制和显示 Sonos 播放器的元数据。我拥有用于​​ POST 和 GET 请求的所有代码和 URL session ,但当在另一个应用程序或物理扬声器上进行更改时,我很难更新播放状态或元数据。例如,如果我通过应用程序向前跳,我使用 POST 请求来更新元数据,效果非常好。如果我在 native Sonos 应用程序上向前跳,我的应用程序的元数据将不会更新。

我知道我要做的就是订阅 Sonos 命名空间并设置回调 URL 并向 Sonos 注册(我已经完成了)。我已经订阅了playbackmetadata命名空间并且我正在使用https://webhook.site供测试用。我收到 200 ok 响应,并且可以看到正文中存在的 JSON 数据,当通过任何应用程序或播放器跳过轨道时,该数据会立即更新。

这正是我所需要的,但我不知道如何将其返回到我的应用程序。

我使用以下代码来订阅命名空间。这适用于订阅。

//Subscribe
let requestStr = "https://api.ws.sonos.com/control/api/v1/groups/\(currentRoom)/playbackMetadata/subscription"
apiManager.postToSonos(requestStr: requestStr)

//apiManager
func postToSonos(requestStr: String) {
var request = URLRequest(url: URL(string: requestStr)!)

request.httpMethod = "POST"

request.setValue("Bearer \(access_token)", forHTTPHeaderField: "Authorization")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")

let task = sessionSonos.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("Post Error")
print(error?.localizedDescription ?? "No data")
return
}

let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let responseJSON = responseJSON as? [String: Any] {
print(responseJSON)
print("responseJSON")
}
}
task.resume()
}

我的问题是将更新后的 JSON 返回到我的应用程序中。我还设置了一个 AWS-Lambda 服务器作为回调 URL。我也不知道我在做什么,但我也可以将实时 JSON 更新到这里。我正在考虑使用推送器发回无声通知。我已经使用推送器设置了帐户,但不知道如何将正确的数据发送回我的应用程序,并确保将正确的数据返回给每个最终用户。也许我缺少其他一些方法来做到这一点。谢谢。

最佳答案

使用“静默”推送通知将其返回到您的应用。

关于swift - 从 Sonos 回调 URL 将实时 json 数据发送到 Swift IOS 应用程序以订阅事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com