Swift 将 json 响应传递给 PKPass 对象

Swift pass json response into PKPass Object

我正在从我的 firebase 服务器创建一个 PKPass 并尝试将它发送到我的 IOS 应用程序以便用户可以将它添加到他们的钱包,但我不确定如何转换我在 IOS 应用程序中收到的 JSON 响应数据到必要的 PKPass 对象。

JSON 响应:

{"Content-Length":"1093412","function-execution-id":"xx84qotfonme","Date":"Wed, 29 Apr 2020 00:44:00 GMT","Content-Disposition":"attachment; filename=Event.pkpass","Server":"Google Frontend","alt-svc":"h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,h3-T050=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"","Etag":"W\/\"10af24-tF23uU9DIoMPnvm2jrbrN4e5JAg\"","x-cloud-trace-context":"104b4a56a5b82510599fa9ab75fcaf0b;o=1","x-powered-by":"Express","Content-Type":"application\/vnd.apple.pkpass; charset=utf-8"}

似乎响应包含票据,因为它有文件名等。

IOS 边:

var requestData : [String : String]? = [String : String]()
    requestData?.updateValue(postId, forKey: "postId");

    AF.request(URLString, method: .post, parameters: requestData).responseString { response in

        guard let resp = response.data else { return }

        do {
            let pass = try PKPass(data: resp)
            print(pass)
        } catch {
            print(error)
        }

当我尝试在 PKPass 对象中传递响应数据时出现此错误

Error Domain=PKPassKitErrorDomain Code=1 "The pass cannot be read because it isn’t valid." UserInfo={NSLocalizedDescription=The pass cannot be read because it isn’t valid., NSUnderlyingError=0x600003c91a70 {Error Domain=PKPassKitErrorDomain Code=1 "(null)"}}

event.pass 是 apple 提供的,我添加了我的 passTypeIdentifier & teamIdentifier,它们似乎工作正常。

您不能简单地更改示例中的 pass.json。清单必须重新生成并退出。

你的 pass 无法加载,因为你使用的是示例中的原始签名,但你更改了 pass.json 中的数据,导致签名无效。