PKPassLibrary containsPass返回错误的值

时间:2014-04-14 10:45:43

标签: ios ios7 ios6 passbook

我通过PKAddPassesViewController将PKPass添加到库中。 该传递在存折应用程序中可见。

调用以下代码:

NSData *data = [NSData dataWithContentsOfFile:filePath];
NSError *error;

//init a pass object with the data
PKPass *pass = [[PKPass alloc] initWithData:data error:&error];

if([self.passbookLibrary containsPass:pass]) {

passbookLibrary不是零。

containsPass在iOS7上返回YES

containsPass在iOS6上返回NO

1 个答案:

答案 0 :(得分:0)

PKPass有两种类型。 PKLocalPass和PKRemotePass。上面创建的PKPass将是PKLocalPass。该检查仅适用于PKRemotePass。您可以使用此功能获取它:

- (PKPass *)passFromLibraryFromPKPass:(PKPass *)pass {
    if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
        PKPass *libraryPass = [self.passbookLibrary passWithPassTypeIdentifier:pass.passTypeIdentifier serialNumber:pass.serialNumber];
        return libraryPass;
    } else {
        return pass;
    }
}

此外,配置文件必须启用Passbook。我创建了一个新的配置文件,其中App ID包含传递类型标识符。

在这种情况下,iOS 7非常好用。它只是有效。