嗨,首先我必须承认我真的不明白整个 Passbook 主题是如何运作的。所以这是我的情况:我有一个创建 .pkpass 文件的后端系统存储它们并创建一个 URL。当我在浏览器中打开此 URL 时,它会直接开始下载 pass 文件。如何使用我的 ios 应用程序接收或打开此文件?
提前致谢。
您可以使用网络服务来获取传递数据。Web 服务可以以 base64(NSString) 格式发送您的通行证数据,然后您对其进行解码以获取 NSData。
使用数据来启动PKPass
对象。
PKPass *pass = [[PKPass alloc] initWithData:passData error:&err];
获得 PKPass 后,您可以使用PKAddPassesViewController
它在应用程序中显示它。你可以在这里找到详细的解释。
注意:您可以直接从 URL using 下载 Pass 数据,NSUrlConnection
并使用下载的数据进行创建PKPass
。
另一种方式..更简单,也可以在移动网络应用程序中使用。编写一个简单的 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 )