Passbook中的替换传递是否需要新传递与旧传递不同?

时间:2012-12-06 14:40:18

标签: iphone ios ios6 passbook

我正在尝试通过调用-replacePassWithPass:并传递PKPassLibrary中已有的相同传递来更新Passbook中的传递。方法返回NO(替换失败) - 为什么? (顺便说一下:我的设备上的控制台没有显示来自iOS的任何日志)

-replacePassWithPass:的文档在这种情况下不是很有用:

  

如果带有匹配标识符和序列号的传递,则会失败   尚未出现在库中,或者过程无权   访问通行证。

和:

  

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

我满足了这两个要求。

不可能以这种方式替换传球吗?我应该使用-removePass:而不是尝试使用PKAddPassesViewController添加它吗?

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

1 个答案:

答案 0 :(得分:1)

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

如果您的PKPassLibrary中有传递, -replacePassWithPass 适用于第一种情况, -removePass 并使用 PKAddPassesViewController 将其添加回来在第二个。

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

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

2)传递的新实例必须至少与旧传递有一个区别(passTypeIndentifier和serialNumber除外必须保持不变);

3)您的应用必须拥有使用此passTypeIdentifier的通行证的权利。