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 中的数据,导致签名无效。
我正在从我的 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 中的数据,导致签名无效。