【问题标题】:Receiving Passbook's .pkpass from URL without Webview从没有 Webview 的 URL 接收 Passbook 的 .pkpass
【发布时间】:2013-05-29 14:59:37
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: iphone ios backend passbook


    【解决方案1】:

    您可以使用网络服务来获取通行证数据。 Webservices 可以以 base64(NSString) 格式发送您的 pass 数据,然后您将其解码以获取 NSData。

    使用数据发起PKPass对象。

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

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

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

    【讨论】:

    • 所以我无法将它作为 pkpass 文件捕获,我需要接收一个字符串然后使用 initWithData 方法?
    • 每个文件都是二进制文件,无论是 .pkpass 还是 .png。您必须找到一种获取文件数据的方法。如果您使用 web 服务,请使用 base64 编码字符串并解码为 NSData。如果您直接流式传输,您可以获得 NSData。一旦你得到 NSData 就说 iOS 通过初始化 Object 说它真的是一个 PkPass。
    • 我可以使用 NSData *data = [NSData dataFromBase64String:originalString];解码base64字符串?
    【解决方案2】:

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

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

    我在我的项目中使用过它,效果很好!!

    【讨论】:

    • 是的,我也是这样做的,只是遇到了一些问题,我必须如何发送通行证数据才能以正确的方式打开它……它现在可以工作了,但感谢您的回答
    【解决方案3】:

    如果您在网站上托管指向 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 )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      相关资源
      最近更新 更多