ios Safari无法下载存折文件.pkpass

rqqzpn5f  于 2023-04-01  发布在  iOS
关注(0)|答案(6)|浏览(194)

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

Safari cannot download this file.

我在这里读过类似的Q& A,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"
}
x7yiwoj4

x7yiwoj41#

注意-我遇到了这个问题。我的解决方案是选择不同的中间证书。Apple在此页面上的中间证书中有两个标记为“WWDR证书”的证书:https://www.apple.com/certificateauthority/
然而,截至目前,只有2023年到期的一个实际上适用于此目的。

oymdgrw7

oymdgrw72#

虽然这是一个有点老这发生在我最近所以我只是离开我的解决方案的情况下,它可以帮助其他人。
我这边的问题是我把 voided 字段设置为字符串而不是布尔值,像这样:“voided”:“false”并且缺少“expirationDate”字段。
这样做解决了这个问题:

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

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

wj8zmpe1

wj8zmpe13#

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

4xrmg8kj

4xrmg8kj4#

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

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

因此,请确保仅使用字符串作为字段定义中的“键”属性

wqnecbli

wqnecbli5#

在创建签名文件时,还要检查是否使用了最新的Apple WWDR intermediate certificate

2uluyalo

2uluyalo6#

您可以通过在www.example.com中查看iPhone日志来查看错误原因Console.app:
1.将iPhone连接到Mac,然后Console.app在Mac上打开www.example.com。
1.在Console.app的侧边栏中选择iPhone。
1.点击Console.app中的“开始流媒体”按钮。
1.在iPhone上打开pkpass文件(通过在Safari中下载,在电子邮件中打开)。
1.点击Console. app中的“暂停”按钮。

  • 在www.example.comConsole.app搜索:
  • 通行证标识符,例如pass.com.example.XXXX
  • Pass Viewer
  • Invalid data
  • MobileSafari(如果在Safari中打开)
  • MobileMail(如果在邮件中打开)

在我的例子中,我能够确定错误是由我将serialNumber值设置为整数而不是字符串引起的:🙄

Invalid data error reading pass pass.com.example.XXXX/(null). Value for key 'serialNumber' must be of class NSString, but is actually of class __NSCFNumber.

相关问题