swift - Swift 将 json 响应传递给 PKPass 对象
问题描述
我正在PKPass
从我的 firebase 服务器创建一个并尝试将其发送到我的 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 是苹果提供的一个,我添加了我的passTypeIdentifier
&teamIdentifier
似乎工作正常。
解决方案
您不能只是简单地更改示例中的 pass.json。清单必须重新生成和退出。
您的传递无法加载,因为您使用的是示例中的原始签名,但您更改了 pass.json 中的数据,导致签名无效。
推荐阅读
- reactjs - 从嵌套列表中拖动项目时拖动后备项目的奇怪行为
- firewalld - 使用防火墙丰富的规则丢弃具有特定源和目标端口的环回数据包
- java - CXFServlet 抛出 java.lang.NoSuchMethodError:
- javascript - 计算 HTML 表单中的总行数
- swift - 在 UIKit 中模糊自定义 TabBar
- c# - API 密钥未找到异常
- javascript - 如何以相同的请求在两个不同的路径中查询?
- google-cloud-dataflow - 使用 Python Apache Beam/Dataflow 端输入时出错
- tensorflow - 使用 CUDA 10.2 从源代码构建 tensorflow==1.15.4 后 GPU 无法识别
- c++ - EFI 内存映射返回 0 个 EFIConventionalMemory 部分