Safari cannot download passbook file .pkpass

牧云@^-^@ 提交于 2019-12-13 15:53:02

问题


I've got a link on a web page that should enable users to download a passbook file from a link, however when clicking on the link in Safari on an iPhone, I get the following error message:

Safari cannot download this file.

I have read similar Q&As on here, and the MIME type is set to application/vnd.apple.pkpass. The file can be downloaded on a Windows phone.

Any suggestions on why this is the case and how to resolve this so users can access the passbook file?

The pkpass contains the following files:

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

An example of the manifest.json:

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

An example of the 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"
}

回答1:


Although this is a bit old this happened to me recently so I'll just leave my solution in case it helps anyone else.

The problem on my side was that I was setting the voided field as a string instead of a boolean, like this: "voided":"false" and was missing the "expirationDate" field.

So doing this fixed the issue:

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

It was tricky and took me a while to figure it out. Hope it helps.




回答2:


I changed the webServiceURL to use https as mentioned by @PassKit and the issue was resolved.




回答3:


i had some other issue causing .pkpass files to be displayed correctly when viewed on my mac, but yielded the same "Safari cannot download this file" - error when trying to view them in iOS.

my source of error was:

  • i was using integer values for the "key" property in the field-definitions (as i'm using a CMS to create those fields)

so, be sure to use only strings as "key" property in the field-definitions




回答4:


Also check that you're using an up-to-date Apple WWDR intermediate certificate when creating the signature file.



来源:https://stackoverflow.com/questions/34694542/safari-cannot-download-passbook-file-pkpass

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!