我正在尝试使用 Firebase 保存PKPass
,这样我就不会在每次用户想要将通行证添加到墙边或发送通行证时生成通行证。我将pass.passURL
存储在我的 firebase 数据库中,然后在用户想要使用该通行证执行某些操作时再次获取它。现在发生的一切只是钱包正在打开,但通行证没有显示。这是存储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)
}
您需要将整个 PKPass 捆绑包存储为数据 blob。然后使用 PKPass.init(data: ...( 重新创建它,并使用 PassKit API 查看它是否已经在钱包中。