【问题标题】:Safari cannot download passbook file .pkpassSafari 无法下载存折文件 .pkpass
【发布时间】:2016-04-14 04:02:52
【问题描述】:

我在网页上有一个链接,用户可以通过该链接下载存折文件,但是在 iPhone 上的 Safari 中单击该链接时,我收到以下错误消息:

Safari cannot download this file.

我在这里阅读过类似的问答,MIME 类型设置为application/vnd.apple.pkpass。该文件可以在 Windows 手机上下载。

关于为什么会出现这种情况以及如何解决这个问题以便用户可以访问存折文件的任何建议?

pkpass 包含以下文件:

icon.png
logo.png
strip.png
manifest.json
pass.json
signature

manifest.json 的一个例子:

{
  "icon.png": "fa6b59072ae5c8163c903d8c8b5f2e4a45fbd49b",
  "logo.png": "3165c9be22cbf76e2b3118972dabaef8918390f5",
  "strip.png": "5d15c45f543e8088c227fc54a6c01d1f9f0b1db3",
  "pass.json": "0f536b34a6b73a7799aae43ff9861dde45a6dfc6"
}

pass.json 的一个例子:

{
    "passTypeIdentifier":"pass.com.XXXX.sampleticket",
    "formatVersion":1,
    "serialNumber":"TIC1000000518",
    "description":"XXXX",
    "organizationName":"XXXX",
    "teamIdentifier":"W9XR4FBDD4",
    "logoText":"Dragon Bay",
    "foregroundColor":"rgb(0,0,0)",
    "backgroundColor":"rgb(255,255,0)",
    "labelColor":"rgb(0,0,0)",
    "voided":false,
    "eventTicket":{
        "headerFields":[],
        "primaryFields":[],
        "secondaryFields":[{"key":"activity",
            "label":"11/20/2015 12:00 AM",
            "value":"One Day at the Museum"
            }],
        "auxiliaryFields":[],
        "backFields":[{
            "key":"terms",
            "label":"Terms & Conditions",
            "value":"XXXX"
        },
        {
            "key":"contact",
            "label":"XXXX",
            "value":"XXXX"
        },
        {
            "key":"legal",
            "label":"Legal",
            "value":"XXXX"
        },
        {
            "key":"notes",
            "changeMessage":"%@","label":"Notes","value":""
        },
        {
            "key":"lastUpdated",
            "label":"Last Updated",
            "dateStyle":"PKDateStyleMedium",
            "timeStyle":"PKDateStyleShort",
            "isRelative":false,
            "value":"2016-01-08T19:00Z"
        }]
    },
    "barcode":{
        "format":"PKBarcodeFormatPDF417",
        "message":"1000000518",
        "messageEncoding":"UTF-8",
        "altText":"1000000518"
    },
    "authenticationToken":"0123456789ABCDEF",
    "webServiceURL":"XXXX/passbook.svc"
}

【问题讨论】:

  • 它将在 iOS 上失败,因为 pass.json 包含无效值,您的签名不正确,或者包缺少强制性内容。我在您的 pass.json 中看不到任何明显的问题。检查您的捆绑包是否至少包含一个 icon.png。如果您仍有问题,请发布我们可以下载 .pkpass 包的链接。
  • 还要检查您的webServiceURL 协议是否为https 并且authenticationToken 至少为16 个字节
  • @PassKit webservice当前是http
  • 改成 https 问题应该就解决了!
  • 好的,我试试。谢谢。

标签: ios safari passbook wallet


【解决方案1】:

注意 - 我遇到了这个问题。我的解决方案是选择不同的中间证书。 Apple 在此页面的中间证书中有两个标记为“WWDR 证书”的证书:https://www.apple.com/certificateauthority/

但是,截至目前,只有 2023 年到期的那个才真正适用于此目的。

【讨论】:

  • 这也是我的问题。花了很多时间试图弄清楚为什么它不起作用。谢谢分享!!!
  • 哇。这绝对应该是选定的答案。感谢分享。
  • 我有点担心,随着 2023 年的到来,这仍然是答案。你好,苹果?
【解决方案2】:

虽然这有点旧,但最近发生在我身上,所以我会留下我的解决方案,以防它帮助其他人。

我的问题是我将 voided 字段设置为字符串而不是布尔值,如下所示:“voided”:“false”并且缺少“expirationDate”字段。

这样做解决了问题:

  ...
  "expirationDate": "2016-06-30T11:59:59Z",
  "voided": false,
  ...

这很棘手,我花了一段时间才弄明白。希望对您有所帮助。

【讨论】:

    【解决方案3】:

    我将 webServiceURL 更改为使用 @PassKit 提到的 https,问题已解决。

    【讨论】:

      【解决方案4】:

      我有一些其他问题导致 .pkpass 文件在我的 Mac 上查看时正确显示, 但产生了相同的“Safari 无法下载此文件” - 尝试在 iOS 中查看它们时出错。

      我的错误来源是:

      • 我在字段定义中为“key”属性使用整数值(因为我使用 CMS 来创建这些字段)

      所以,请务必在字段定义中仅使用字符串作为“键”属性

      【讨论】:

        【解决方案5】:

        同时检查您在创建签名文件时使用的是最新的Apple WWDR intermediate certificate

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多