我一直在尝试从服务器下载 pkpass 的几个链接,但是每当我下载它时,它都会显示文件“0 kb”的大小,因此我无法将其转换为 pkpass 数据。动态pkpass还有其他方法吗?或其他方式下载并将其加载到钱包?
是因为 pkpass 包含证书和私人信息,这就是它不下载的原因吗?
我找不到使用 swift 4.2 或更高版本在应用程序中集成动态 pkpass 的任何方法。
我一直在使用的链接,但没有一个有效
我一直在尝试从服务器下载 pkpass 的几个链接,但是每当我下载它时,它都会显示文件“0 kb”的大小,因此我无法将其转换为 pkpass 数据。动态pkpass还有其他方法吗?或其他方式下载并将其加载到钱包?
是因为 pkpass 包含证书和私人信息,这就是它不下载的原因吗?
我找不到使用 swift 4.2 或更高版本在应用程序中集成动态 pkpass 的任何方法。
我一直在使用的链接,但没有一个有效
最后得到了一个从服务器获取 pkpass 的解决方案: -> 只需从 api 响应中获取 base64 字符串 -> 将 base64 转换为如下所示的数据
private func convertBase64ToData (base64Str:String) -> Void {
let data = Data(base64Encoded: base64Str, options: .ignoreUnknownCharacters)
openPkPassDataFile(passData: data!)
}
-> 然后像下面这样将数据转换为 PKPass
private func openPkPassDataFile(passData:Data) -> Void{
let pass = try? PKPass(data: passData)
let passLibrary = PKPassLibrary()
if passLibrary.containsPass(pass!) {
print("This pass already added in wallet. Thanks!")
} else {
let pkvc = PKAddPassesViewController(pass: pass!)
pkvc!.delegate = self
self.present(pkvc!, animated: true, completion: {() -> Void in
})
}
}
注意:在控制器中添加import PassKit和PKAddPassesViewControllerDelegate。