-1

我将如何在我的网络服务器上生成 Pass,然后在 Xcode 中下载它。在 xcode 上,我正在尝试生成通行证,然后将其添加到我的存折钱包中。代码:

NSString* passFile = @"http://pass.keatonburleson.com/gen.php?name=128keaton";

//3
NSData *passData = [NSData dataWithContentsOfFile:passFile];

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

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

   [self presentViewController:addController
                   animated:YES
                 completion:nil];

所以基本上,我的错误是“跟踪”并崩溃。更新:感谢 Caleb,不再出现跟踪错误!不幸的是,我收到“通过无效错误!” :( 最新和更新的代码:

    NSString* passFile = @"http://pass.keatonburleson.com/gen.php?name=128keaton";
 NSURL *url = [NSURL URLWithString:passFile];
//3
NSData *passData = [NSData dataWithContentsOfURL:url];

//4
NSError* error = nil;
PKPass *newPass = [[PKPass alloc] initWithData:passData
                                         error:&error];

BG信息:

我的网络服务器包含一个 PHP 脚本,它生成一个 passkit 通行证并像 PkPass 一样显示它以供下载。如果您使用的是 Mac 或 iPhone,您可以转到 passFile URL,它将显示有效的通行证。我认为我的问题是它在真正生成链接文件时尝试下载链接文件并自动下载它。我可能需要编辑一些服务器代码以不破坏我的网络服务器上的“已保存”pkpass。但是,我宁愿不这样做。

4

1 回答 1

0

您可能应该使用-dataWithContentsOfURL:它,因为这就是您提供的。是passData == nil在第二行之后吗?如果是,那可能是你的问题。

注意: PKPass 文档说如果您从 gt 出现错误,您应该检查控制台以获取详细信息-initWithData:error:,因此请查看那里并让我们知道您发现了什么。

更新:

我的网络服务器包含一个 PHP 脚本,它生成一个 passkit 通行证并像 PkPass 一样显示它以供下载。如果您使用的是 Mac 或 iPhone,您可以转到 passFile URL,它将显示有效的通行证。

除非您的服务器正在检测客户端并据此决定发送回什么,否则显示 pass 的同一 URL 不太可能返回 pass 文件本身。查看您收到的数据的内容,看看它是否有效。如果没有,您需要调整服务器或使用不同的 URL。

于 2012-10-04T23:13:27.197 回答