我想在 Firebase 云消息传递的 http POST 请求中使用一块 JSON 数据,我将在下面显示它的图像:
我怎样才能把它转换成可以用 Swift 编码的东西?
我使用quicktype.io来查看是否可以将其转换为 Swift 中的数据结构,这就是我得到的:
如何在我的函数中实现这一点?
func sendNotificationToUser(to topic: String, title: String, body: String) {
let urlString = "https://fcm.googleapis.com/v1/projects/nameofproject-41f12/messages:send HTTP/1.1"
guard let encodedURLString = urlString.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed) else { return }
let url = URL(string: encodedURLString)!
//This was an old data struct I used but didn't work
let postBody = PostBody(message: PostBody.Message(
topic: topic,
notification: [
"title": title,
"body": body ]
)
)
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
var request = URLRequest(url: url)
request.httpMethod = "POST"
do {
request.httpBody = try encoder.encode(postBody)
} catch let err as NSError {
print(request.httpBody)
print(err)
}
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("Bearer ya29.\(self.bearer)", forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
do {
if let jsonData = data {
if let jsonDataDictionary = try JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions.allowFragments) as? [String: AnyObject] { NSLog("Received data:\n\(jsonDataDictionary))")
}
}
} catch let err as NSError {
print(err)
print(postBody.message)
}
}
task.resume()
}