【发布时间】:2013-03-11 07:39:44
【问题描述】:
我遇到了一个我无法解决的问题。我们有一个可以存储卡片的应用程序,这些卡片可以添加到 iOS 上的存折中。我们对此没有任何问题。 但是,当我们需要更新存折中的卡时,我们无法从存折中检索卡 - 我们总是返回 nil。但是在模拟器上它总是有效的。
这就是我的称呼
_passLib = [[PKPassLibrary alloc] init];
NSString* serialId = [[NSString alloc] initWithFormat:@"%@", card.serialId];
PKPass *oldPass = [_passLib passWithPassTypeIdentifier:@"pass.com.mydomain.iphone.Product" serialNumber:serialId];
标识符和序列号 100% 正确。添加卡时,我输出这些值以仔细检查它们是否与上述相同。有没有人有这个或有一些想法可以帮助我解决这个问题? 非常感谢
编辑 1 只是补充。如果我尝试再次添加通行证 - PKAddPassesViewController 会显示新通行证,但“添加”按钮是灰色的,因为我们已经添加了通行证。所以它就像它知道它在那里,但是方法 containsPass 和 passWithPassTypeIdentifier 都失败了..
【问题讨论】:
-
你的App有权限访问passTypeIdentifier吗?
-
不确定 - 这些权限是如何设置的?
-
应用程序本身正在将通行证添加到 Passkit。我们对两者使用相同的 passTypeIdentifier。它也与我们在权利文件中的内容相匹配。我们还缺少什么?
-
我还注意到 containsPass 在设备上也不起作用(在模拟器上还可以),并且查看您甚至不需要权利的文档
-
如果 containsPass 方法告诉您该通行证不在设备上,您应该首先确保该通行证实际上已添加到通行证库中。打开 Passbook 应用程序并确保它确实存在。在您尝试添加通行证之前不会验证通行证,因此即使它显示在设备上,它也可能不会实际添加。如果无效,请检查控制台日志(Xcode 设备管理器)以获取更多信息。