从没有Webview的URL接收Passbook的.pkpass

嗨首先,我必须承认我真的不明白整个Passbook主题是如何工作的。 所以这是我的情况:我有一个后端系统,它创建.pkpass文件存储它们并创建一个URL。 当我在浏览器中打开此URL时,它会直接开始下载传递文件。 如何使用ios应用程序接收或打开此文件?

提前致谢。

您可以使用webservices来获取传递数据。 Webservices可以以base64(NSString)格式发送您的传递数据,并对其进行解码以获取NSData。

使用数据启动PKPass对象。

 PKPass *pass = [[PKPass alloc] initWithData:passData error:&err]; 

获得PKPass后,您可以使用PKAddPassesViewController在应用程序中显示它。 你可以在这里找到详细的解释。

注意:您可以使用NSUrlConnection直接从URL下载Pass数据,并使用下载的数据创建PKPass

另一种方式..simpler,也可用于移动网络应用程序。 编写一个简单的Web服务来返回此传递下载URL,然后在您的应用程序(web或本机ios)中解析json / xml(取决于响应类型),然后在safari中调用URL。

来自本机应用程序调用[[UIApplication sharedApplication] openURL:passdownloadURL];

我在我的项目中使用它,它的工作真棒!

如果您在网站上托管PKPass项目的链接,您可以通过查看HTTPURLResponse上的mimeType属性来检查页面内容是否真的是PKPass项目,该属性应为“application / vnd.apple.pkpass”。 确认后,使用URLRequest下载.pkpass数据,并将数据传递给PKPass初始值设定项,如下所示:

 var error:NSError? let passBookData = PKPass( data: data, error: &error ) if error != nil { print( "Error opening pkpass file" ) return } let pkPassVC = PKAddPassesViewController( pass: passBookData ) currentVC.present( pkPassVC, animated: true, completion: completion )