0

我想在 Firebase 云消息传递的 http POST 请求中使用一块 JSON 数据,我将在下面显示它的图像:

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()
}
4

0 回答 0