1

我一直在尝试从服务器下载 pkpass 的几个链接,但是每当我下载它时,它都会显示文件“0 kb”的大小,因此我无法将其转换为 pkpass 数据。动态pkpass还有其他方法吗?或其他方式下载并将其加载到钱包?

是因为 pkpass 包含证书和私人信息,这就是它不下载的原因吗?

我找不到使用 swift 4.2 或更高版本在应用程序中集成动态 pkpass 的任何方法。

我一直在使用的链接,但没有一个有效

->从我的服务器在 iOS 自定义应用程序中下载 PKPass

->无法将通行证添加到 Apple 钱包

->使用共享扩展 iOS 从 Wallet 打开 .pkpass 文件

4

1 回答 1

1

最后得到了一个从服务器获取 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 PassKitPKAddPassesViewControllerDelegate

于 2021-09-20T10:35:07.717 回答