【问题标题】:Add mutliple pass in apple wallet在苹果钱包中添加多次通行证
【发布时间】:2019-09-11 14:47:12
【问题描述】:

我的应用需要在苹果钱包中添加多个通行证(一组通行证)

我有PKAddPassesViewController,它有一个添加多个pass的方法,但是添加后它只显示1个pass。

//destinationURLs are download file URL
let pkfile1 : Data = try! Data(contentsOf: destinationURL1)
let pkfile2 : Data = try! Data(contentsOf: destinationURL2)
var pkPasses = [PKPass]()
let pass : PKPass = PKPass(data: pkfile1 as Data, error: nil)
let pass1 : PKPass = PKPass(data: pkfile2 as Data, error: nil)
pkPasses.append(pass)
pkPasses.append(pass1)

let vc = PKAddPassesViewController(passes: pkPasses) as PKAddPassesViewController
vc.delegate = self
appDelegate.window?.rootViewController!.present(vc, animated: true, completion: nil)

使用此代码,我只能得到 1 个格式正确的图表

我的 PKAddPassesViewController 通行证截图

【问题讨论】:

  • 您可以尝试向左或向右滑动以查看是否存在 2 个 pass 吗?
  • 我已经查过了,但我没有得到任何其他通行证或门票。
  • 使通行证独一无二的是通行证类型标识符和序列号字段。你能检查你的通行证是否相同(通行证类型id + S/N)?
  • @HichemBOUSSETTA,我们有与我们自己的应用程序不同的通行证/票证,但通行证类型标识符和序列号是相同的,因为票证/通行证是从我们的应用程序生成的
  • 您需要为生成的每个通行证使用不同的序列号,否则将被视为相同。

标签: ios wallet passkit


【解决方案1】:

查看您的代码,pass 和 pass1 包含相同的数据。

您上面的评论解释了为什么您只看到一张通行证,因为通行证由证书和序列号唯一索引。

Wallet 不允许使用相同索引的 2 次通行证,因此您的第二次通行证很可能会覆盖您的第一次通行证。生成第二次通行证时使用不同的序列号,不会有问题。

【讨论】:

  • 很抱歉错误地添加了相同的 pkfile,但两次传递的 pkpass 不同,请检查我编辑的代码。
  • 但如果它们的序列号相同,您将只能在钱包中看到一张卡。
  • 我认为序列号对于应用程序来说是唯一的。我说的对吗?
  • 不,序列号必须是唯一的。当您更新通行证时,Wallet 使用 passTypeId 和 seralNumber 的组合来索引通行证。如果两者相同,则更新通行证。因此,具有相同 passTypeId 和 serialNumber 的第二次通行证正在更新您的第一个通行证 - 这就是为什么您只能在钱包中看到一个通行证的原因。使第二遍的序列不同,您的问题将得到解决。
  • 我的应用程序要求有一个事件,并且一个事件有 2 种或更多类型的通行证(白金、金)所以我如何更改我的通行证类型 ID 和序列号以进行第二次通行证,因为我生成了 1 个通行证类型 ID对于我的应用程序,是否需要为不同的通行证提供不同的通行证类型 ID?
猜你喜欢
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
相关资源
最近更新 更多