2016-08-04 94 views
0

我在網頁上有一個鏈接,可以讓用戶從鏈接下載存摺文件,但是當點擊iPhone上的Safari鏈接時,我得到了以下錯誤消息:無法下載iPhone上的存摺文件.pkpass(Safari)

Safari cannot download this file. 

我已經上讀到這裏類似Q &,和MIME類型設置爲application/vnd.apple.pkpass。存摺可以在Windows手機上下載。

有關爲什麼會出現這種情況以及如何解決此問題的任何建議,以便用戶可以訪問存摺文件?

我已經下載了桌面上的存摺,這就是它包含的內容。

的pkpass包含以下文件:

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

對於manifest.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)", 
    "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":"ABCDEF", 
    "webServiceURL":"https://XXXX/passbook.svc" 
} 

我:

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

的pass.json的例子一個similar issue before,我通過確保webServiceURL是https解決了這個問題,但是在這種情況下場景。

+0

您是否試過從您的iPhone中讀取日誌流?插入手機並使用XCode設備應用訪問日誌。如果你已經排除了所有顯而易見的問題,通行證的簽署通常是罪魁禍首。你也可以分享pkpass文件,我可以看看。 – tomasmcguinness

+0

@tomasmcguinness我目前無權訪問xCode/a Mac。我在這裏上傳了一個示例 - https://www.dropbox.com/s/v6i3qx9twdlcxrh/DB98.pkpass?dl=0 – Bhav

+0

{「key」中的空字符串很可能是「notes」,「changeMes​​sage」:「 %@」, 「標籤」: 「注意事項」, 「值」: 「」}。嘗試包括一個空格或unicode非破壞空間。當您試圖按照托馬斯的建議安裝通行證時,連接到Xcode並閱讀日誌會產生更多信息。 – PassKit

回答

1

檢查您的日誌,您的簽名有問題。

Aug 4 17:08:22 pfr MobileSafari(PassKitCore)[611] <Notice>: Error evaluating trust: <private> 
Aug 4 17:08:22 pfr MobileSafari(PassKitCore)[611] <Notice>: Signature validation: *** FAILED *** 
Aug 4 17:08:22 pfr MobileSafari(PassKitCore)[611] <Fault>: Invalid data error reading pass <private>. <private> 
Aug 4 17:08:22 pfr MobileSafari(PassKitCore)[611] <Notice>: Invalid data error reading pass <private>. <private> 
Aug 4 17:08:22 pfr MobileSafari[611] <Notice>: PassBook Pass download failed: The pass cannot be read because it isn\M-b\M^@\M^Yt valid. 

檢查事項:

  • 做的每個文件的SHA1哈希匹配清單?
  • 證書被吊銷或過期了嗎?
  • 簽名是否包含更新的Apple WWDR證書(the old one expired in February)?
  • 簽名是否包含簽名日期?

更新:

檢查你的簽名後,我可以看到,它是由過期蘋果WWDR證書籤名。此證書已過期2016-02-14T18:56:35Z。

Apple Root CA0 080214185635Z 160214185635Z 

Download the new certificate並嘗試再次編譯通過。

+0

謝謝。登錄Apple開發者帳戶並查看iOS證書。 pass.json文件中的teamIdentifier與teamId匹配,並且pass.json文件中的passTypeIdentifier與證書的名稱匹配。 – Bhav

+1

進一步更新 - 您正在使用過期的WWDR證書。 – PassKit

+0

我已經從您提到的鏈接下載了證書並將其安裝在服務器上。但是,我仍然收到相同的錯誤。我已經編譯/上傳了一個新的通行證 - https://www.dropbox.com/s/ypzbpvwr7phpjfj/DB98b.pkpass?dl=0 – Bhav