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

时间:2013-05-29 14:59:38

标签: iphone ios backend passbook

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

提前致谢。

3 个答案:

答案 0 :(得分:3)

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

使用数据启动PKPass对象。

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

获得PKPass后,您可以使用PKAddPassesViewController在应用内显示它。您可以找到详细解释here

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

答案 1 :(得分:1)

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

来自原生应用调用[[UIApplication sharedApplication] openURL:passdownloadURL];

我在我的项目中使用它并且它的工作非常棒!!

答案 2 :(得分:0)

如果您在网站上托管PKPass项目的链接,您可以通过查看HTTPURLResponse上的mimeType属性来检查页面内容是否真的是PKPass项目,该属性应为" application / vnd.apple.pkpass& #34 ;. 确认后,使用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 )