【问题标题】:Swift storing PKPass with Firebase使用 Firebase 快速存储 PKPass
【发布时间】:2020-05-28 01:05:21
【问题描述】:

我正在尝试使用 Firebase 保存 PKPass,这样我就不会在每次用户想要将通行证添加到 waller 或发送通行证时生成通行证。我将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)
}

【问题讨论】:

    标签: swift firebase passkit


    【解决方案1】:

    您需要将整个 PKPass 包存储为数据块。然后使用 PKPass.init(data: ...) 重新创建它并使用 PassKit API 来查看它是否已经在 Wallet 中。

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 2018-03-15
      • 2021-04-17
      • 2017-11-17
      • 2018-05-26
      • 2019-08-07
      • 2016-11-15
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多