0

我正在尝试通过调用-replacePassWithPass:并传递与PKPassLibrary. 方法返回NO(替换失败) - 为什么?(顺便说一句:我设备上的控制台不显示来自 iOS 的任何日志)

在这种情况下,文档-replacePassWithPass:不是很有帮助:

如果库中不存在具有匹配标识符和序列号的通行证,或者该进程无权访问该通行证,则此操作将失败。

和:

如果成功更换通行证,则为 YES;否则否。

我满足这两个要求。

不能用这种方式更换通行证吗?我应该使用-removePass:而不是尝试添加它PKAddPassesViewController吗?

我的后端尚不支持更新通行证,因此我无法验证此处的所有可能性(即真正获得具有相同 typeID 和序列号但内容不同的更新通行证)。你有什么经验?

4

1 回答 1

1

只要 passTypeIdentifier一个 pass 的序列号等于 passTypeIdentifier另一个 pass 的序列号 - 它们就是同一个 pass 的实例。如果两次传递之间的一切都相同 - 它们是一次传递的一个实例。

如果您的 PKPassLibrary 中确实有通行证,则-replacePassWithPass在第一种情况下有效,-removePass并在第二种情况下使用PKAddPassesViewController将其添加回来。

更新通行证始终是替代品。为了成功更换通行证,基本上必须满足三个要求:

1) 必须已将具有相同 passTypeIdentifier 和 serialNumber 的 pass 添加到您的 PKPassLibrary;

2) pass 的新实例必须与旧 pass 至少有一个差异(除了 passTypeIndentifier 和 serialNumber 必须保持相同);

3) 您的应用程序必须有权使用此 passTypeIdentifier 进行通行证。

于 2012-12-26T21:56:49.243 回答