存折:从服务器获取base64字符串,转换并保存pkpass到iOS


#import <PassKit/PassKit.h>
// convert base64 string to pkpass data
NSData *passData = [[NSData alloc] initWithBase64EncodedString:strEncodeData options:0];
NSLog(passData);
// init a pass object with the data
PKPass *pass = [[PKPass alloc] initWithData:passData];
NSLog(pass);
//init a pass library
PKPassLibrary *passLib = [[PKPassLibrary alloc] init];
//check if pass library contains this pass already
if([passLib containsPass:pass]) {
    //pass already exists in library, show an error message
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Pass Exists" message:@"The pass you are trying to add to Passbook is already present." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
} else {
    //present view controller to add the pass to the library
    PKAddPassesViewController *vc = [[PKAddPassesViewController alloc] initWithPass:pass];
    [vc setDelegate:(id)self];
    [self presentViewController:vc animated:YES completion:nil];
}

我正在努力将存折保存到ios钱包。由于安全问题,我需要使用 base64 数据而不是 uri。我为此假设的流程如下所示

  1. 从服务器获取 base64 字符串。
  2. 使用 "initWithBase64EncodedString" 将 base64 转换为 pkpass 数据
  3. 使用"PKAddPassesViewController"将pkpass保存到钱包

使用上面的代码,进度在第二步停止,错误为 nil,即使解码的 base64 字符串也是正确的。所以我不能确定第二步后的代码能否正常运行而不会出现错误。

感谢您提前回答。

我知道

它晚了,但在大量研究后我遇到了同样的问题,当 base64 字符串从 MIME 类型的服务器响应解码时,问题出在initWithBase64EncodedString:passBase64上,data:application/vnd.apple.pkpass;base6 NSData得到零。也许这是一个错误,但是如果您使用NSData+Base64类 https://github.com/l4u/NSData-Base64 它的旧类,但您可以将其配置为与 ARC 一起使用,然后将数据从 base64 字符串转换为 NSData 问题消失。

相关内容

  • 没有找到相关文章