gpt4 book ai didi

ios - 从我的服务器上的iOS自定义应用程序中下载PKPass

转载 作者:行者123 更新时间:2023-12-01 17:56:10 28 4
gpt4 key购买 nike

我已经设置了一个返回PKPass的服务器。如果我将URL复制到浏览器,则会显示一个通行证(在我的Mac和iPhone中)。
我用于下载通行证的代码如下:

NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:kAPIPass]];
if (nil != data) {
PKPass *pass = [[PKPass alloc] initWithData:data error:nil];
PKAddPassesViewController *pkvc = [[PKAddPassesViewController alloc] initWithPass:pass];
pkvc.delegate = self;
[self presentViewController:pkvc
animated:YES
completion:^{
// Do any cleanup here
}
];
}

无论如何,当我运行此代码时,出现以下错误:

*由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“仅支持RGBA或
白色空间,这种方法很不实用。

我不知道错误是什么...当我使用Safari下载通行证时看起来还可以,甚至代码也行了(只有3个简单的行...)有Passkit经验的人可以帮助我吗?

编辑:奇怪的是,完全相同的代码正在一个新的新项目中运行

编辑2:从AppDelegate删除以下行,删除崩溃,这很奇怪!
[[UINavigationBar appearance] setTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbar_bg_gen.png"]]];

最佳答案

迅捷3

这是从带有完成处理程序的服务器下载.pkpass(存折文件)的代码,并显示pkpassviewcontroller以进一步添加到苹果钱包中。

import PassKit


let url : NSURL! = NSURL(string: "YOUR .pkpass URL GOES HERE")
let request: NSURLRequest = NSURLRequest(url:
url as URL)
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)

let task : URLSessionDataTask = session.dataTask(with: request as URLRequest, completionHandler: {(data, response, error) in

var error: NSError?
let pass = try? PKPass(data: data!, error: &error)
if error != nil {
DispatchQueue.main.async {
let alertView = UIAlertView(title: "Error", message: (error?.localizedDescription)!, delegate: nil, cancelButtonTitle: "OK", otherButtonTitles: "Cancel")
alertView.show()
}
}
else {
let passLibrary = PKPassLibrary()
if passLibrary.containsPass(pass!) {
DispatchQueue.main.async {
let alertView = UIAlertView(title: "Already Exist", message: "This pass already added in wallet. Thanks!", delegate: nil, cancelButtonTitle: "OK", otherButtonTitles: "Cancel")
alertView.show()
self.hideLoading()
}
} else {
let pkvc = PKAddPassesViewController(pass: pass!)
pkvc.delegate = self
self.present(pkvc, animated: true, completion: {() -> Void in
// Do any cleanup here
self.hideLoading()
})

}
}

})
task.resume()

关于ios - 从我的服务器上的iOS自定义应用程序中下载PKPass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17277120/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com