PKPass文件在Passbook中替换为同一应用程序中的文件

时间:2014-02-14 07:35:20

标签: replace passbook

我的应用程序处理下载​​优惠券&保存到Passbook。但每次下载不同的优惠券时,文件都会被Passbook取代。

以下是我将优惠券添加到Passbook的代码:

第1步:在项目中增加了“PassKit”框架&进口相同。

第2步:在我的h文件中添加了'PKAddPassesViewControllerDelegate'。

第3步:

- (void) generatePass {

if (![PKPassLibrary isPassLibraryAvailable]) {
    [[[UIAlertView alloc] initWithTitle:@"Error"
                                message:@"PassKit not available"
                               delegate:nil
                      cancelButtonTitle:@"Pitty"
                      otherButtonTitles: nil] show];
    return;
}
else {

    NSData *passData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://(url).pkpass"]];

    NSError* error = nil;
    PKPass *newPass = [[PKPass alloc] initWithData:passData
                                             error:&error];
    if (error!=nil) {
        [[[UIAlertView alloc] initWithTitle:@"Passes error"
                                    message:[error
                                             localizedDescription]
                                   delegate:nil
                          cancelButtonTitle:@"Ooops"
                          otherButtonTitles: nil] show];
        return;
    }

    PKAddPassesViewController *addController =
    [[PKAddPassesViewController alloc] initWithPass:newPass];

    addController.delegate = self;
    [self presentViewController:addController
                       animated:YES
                     completion:nil];
}
}

1 个答案:

答案 0 :(得分:1)

Passbook索引经过serialNumberpassTypeIdentifier。添加传递时,如果用户的传递库中已存在匹配serialNumberpassTypeIdentifier的传递,则该传递将被添加的传递覆盖。

要为同一passTypeIdentifer添加多个通行证,您必须为每个新通行证生成唯一的serialNumber