我正在尝试通过调用-replacePassWithPass:
并传递PKPassLibrary
中已有的相同传递来更新Passbook中的传递。方法返回NO
(替换失败) - 为什么? (顺便说一下:我的设备上的控制台没有显示来自iOS的任何日志)
-replacePassWithPass:
的文档在这种情况下不是很有用:
如果带有匹配标识符和序列号的传递,则会失败 尚未出现在库中,或者过程无权 访问通行证。
和:
如果通行证成功更换,则为YES;否则没有。
我满足了这两个要求。
不可能以这种方式替换传球吗?我应该使用-removePass:
而不是尝试使用PKAddPassesViewController
添加它吗?
我的后端还不支持更新通行证,因此我无法在此验证所有可能性(即真正获得具有相同typeID和serialNumber的更新通行证,但内容不同)。你有什么经历?
答案 0 :(得分:1)
只要passTypeIdentifier 和一次传递的序列号等于passTypeIdentifier 和另一次传递的序列号 - 它们就是同一传递的实例。如果两次传球之间的一切都相同 - 它们是一次传球的一个实例。
如果您的PKPassLibrary中有传递, -replacePassWithPass 适用于第一种情况, -removePass 并使用 PKAddPassesViewController 将其添加回来在第二个。
更新通行证始终是替代品。为了成功替换传球,您必须满足三个要求:
1)必须已将具有相同passTypeIdentifier和serialNumber的传递添加到您的PKPassLibrary中;
2)传递的新实例必须至少与旧传递有一个区别(passTypeIndentifier和serialNumber除外必须保持不变);
3)您的应用必须拥有使用此passTypeIdentifier的通行证的权利。