Swift 带Firebase的快速存储PKPass

Swift 带Firebase的快速存储PKPass,swift,firebase,passkit,Swift,Firebase,Passkit,我正试图用Firebase保存PKPass,这样我就不会在每次用户想要将密码添加到waller或发送密码时生成密码。我将pass.passURL存储在我的firebase数据库中,然后在用户希望对pass执行某些操作时再次获取它。现在发生的一切是钱包打开了,但是通行证没有出现。这是存储PKPass 保存功能: func saveTicketIdToDB(pass: PKPass) { guard let uid = Auth.auth().currentUser?.uid else {

我正试图用Firebase保存
PKPass
,这样我就不会在每次用户想要将密码添加到waller或发送密码时生成密码。我将
pass.passURL
存储在我的firebase数据库中,然后在用户希望对pass执行某些操作时再次获取它。现在发生的一切是钱包打开了,但是通行证没有出现。这是存储
PKPass

保存功能:

func saveTicketIdToDB(pass: PKPass) {

    guard let uid = Auth.auth().currentUser?.uid else { return }

    guard let postId = post?.postId else { return }

    guard let paymentId = paymentId else { return }

    guard let passUrl = pass.passURL as? URL else { return }
    let passUrlString: String = passUrl.absoluteString

    let values = ["passUrl": passUrlString]

    let db = Firestore.firestore()
    db.collection("payments").document(postId).collection("purchases").document(paymentId).updateData(values) { (error) in

        if let error = error {
            print("There was an error", error.localizedDescription)
            return
        }

        print("Successfully saved pkpass into database.")
    }
}
guard let passUrlData = URL(string: passUrl) else { return }

if #available(iOS 10.0, *) {
   UIApplication.shared.open(passUrlData, options: [:], completionHandler: nil)
} else {
   UIApplication.shared.openURL(passUrlData)
}
打开钱包:

func saveTicketIdToDB(pass: PKPass) {

    guard let uid = Auth.auth().currentUser?.uid else { return }

    guard let postId = post?.postId else { return }

    guard let paymentId = paymentId else { return }

    guard let passUrl = pass.passURL as? URL else { return }
    let passUrlString: String = passUrl.absoluteString

    let values = ["passUrl": passUrlString]

    let db = Firestore.firestore()
    db.collection("payments").document(postId).collection("purchases").document(paymentId).updateData(values) { (error) in

        if let error = error {
            print("There was an error", error.localizedDescription)
            return
        }

        print("Successfully saved pkpass into database.")
    }
}
guard let passUrlData = URL(string: passUrl) else { return }

if #available(iOS 10.0, *) {
   UIApplication.shared.open(passUrlData, options: [:], completionHandler: nil)
} else {
   UIApplication.shared.openURL(passUrlData)
}

您需要将整个PKPass捆绑包存储为数据blob。然后使用PKPass.init(数据:…)重新创建它,并使用PassKit API查看它是否已经在钱包中。

您需要将整个PKPass捆绑包存储为数据块。然后使用PKPass.init(数据:…)重新创建它,并使用passkitapi查看它是否已经在钱包中