【问题标题】:safari ios cannot open passbook pkpasssafari ios无法打开存折pkpass
【发布时间】:2014-02-11 15:03:29
【问题描述】:

我已经看过一些关于这个主题的话题,但还没有找到答案:

Safari 无法打开我作为电子邮件附件发送的 .pkpass 文件

首先我认为这可能与我的设置有关,但后来我发现我也无法从该网站打开示例 .pkpass http://www.tomttb.com/test/pass/full_sample/

我的文件和示例文件都将内容类型设置为 应用程序/vnd.apple.pkpass

在 Android 上,我使用 PassWallet 应用程序,可以下载 .pkpass 并将其添加到存折中。

有什么想法吗?

【问题讨论】:

  • 您的证书很可能无效或已过期。由于证书错误,您提供的示例链接失败。 PassWallet 不检查通行证证书。您能否发布一个指向您遇到问题的 .pkpass 的链接,我可以检查一下吗?
  • speedy.sh/jmvnE/EventTicket2676929.pkpass 证书到期日期是 2014 年 12 月。所以这不应该是原因。它可能无效。可能是什么原因?

标签: ios safari content-type passbook


【解决方案1】:

查看您的 .pkpass 包后,您的问题是您的 pass.json 文件包含无效的 JSON。

尝试添加通行证时,设备控制台日志显示以下内容:

Feb 12 00:31:58 pfr MobileSafari[236] <Warning>: Invalid data error reading pass
/var/mobile/Applications/AF19C13B-113D-44B9-9067-1228253C82ED/Library/Caches/com.apple.mobilesafari/com.apple.Passbook/5BE44BA0-7E7F-4DFA-92ED-D5E41A984F82.pkpass/pass.json. 
Could not read json from URL file:///var/mobile/Applications/AF19C13B-113D-44B9-9067-1228253C82ED/Library/Caches/com.apple.mobilesafari/com.apple.Passbook/5BE44BA0-7E7F-4DFA-92ED-D5E41A984F82.pkpass/pass.json: 
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" 
(Badly formed object around character 221.) UserInfo=0x148cca010 {NSDebugDescription=Badly formed object around character 221.}

后加逗号:

"foregroundColor": "rgb(255,111,15)"

并更改密钥:

"description" : '"totally cool party"',

到:

"description" : "\"totally cool party\"",

然后重新编译你的 .pkpass 包,你应该会很好。


** 更新 **

您的通行证现在失败,因为您在需要整数时为 formatVersion 键设置了一个字符串。

Feb 12 11:04:22 pfr MobileSafari[1825] <Warning>: Invalid data error reading pass pass.com.ticketino/2677326. Value for key 'formatVersion' must be of class NSNumber, but is actually of class __NSCFString.
Feb 12 11:04:22 pfr MobileSafari[1825] <Warning>: PassBook Pass download failed: The pass cannot be read because it isn’t valid

更改密钥:

"formatVersion": "1",

收件人:

"formatVersion":1,

另外,您的相关日期似乎不在ISO8061 format 中,这也会导致通行证被拒绝。

要修复,请将relevantDate 键更改为:

"relevantDate" : "2014-02-28T12:00:00Z",

至于如何诊断这些问题,只需将手机连接到运行 Xcode 的 Mac 并从 Organizer 窗口监控设备控制台。如果您需要更详细的信息,可以从设备上的开发者设置菜单中启用附加存折日志记录。


** 更新 2 **

现在您的通行证失败了,因为 webServiceURL 是一个安全 URL。对于生产通行证,您的 Passbook Web 服务必须通过 https 提供服务。

如果您的设备配置为开发,那么您可以通过激活开发人员设置菜单的 Passkit 测试部分中的“允许 HTTP 服务”选项来绕过此设置。

您的通行证也不包含authenticationToken 密钥。这是指定 webServiceURL (Read the Passbook Web Service Manual!) 时的必填键

在不访问 Xcode 的情况下调试 Passbook 将非常棘手,如果不是不可能的话。建议要么购买 Mac,要么采用Virualise Mac OSXrun Mac OSX on PC Hardware. 的多种方式之一


** 更新 3 **

Feb 12 23:21:36 pfr MobileSafari[225] <Warning>: Invalid data error reading pass pass.com.ticketino/2678239. Unable to parse relevantDate 28-05-2014T12:00:00Z as a date. We expect dates in "W3C date time stamp format", either "Complete date plus hours and minutes" or "Complete date plus hours, minutes and seconds". For example, 1980-05-07T10:30-05:00.
Feb 12 23:21:36 pfr MobileSafari[225] <Warning>: PassBook Pass download failed: The pass cannot be read because it isn’t valid.

您的relevantDate 密钥仍然不是有效的 ISO8601 日期!

要修复,请将relevantDate 键更改为:

"relevantDate" : "2014-05-28T12:00:00Z",

【讨论】:

  • 谢谢。我修好了,还是打不开。你如何检查这些文件?这是新版本,也许你看到了别的东西。 speedy.sh/7zqMt/EventTicket2677326.pkpass
  • 查看我更新的答案 - 你通过现在失败了,因为你已经为需要整数的字段设置了一个字符串。
  • 再次感谢,我已按照您的指示进行了更新。如果您能再看一下,我将不胜感激,因为显然还有另一个问题。更新版本:speedy.sh/JVAaC/EventTicket2677945.pkpass 不幸的是,我没有可用于测试的 Mac。有什么方法可以在设备上查看控制台或类似的东西吗?非常感谢。
  • @update2:今天下午我设法访问了一台 Mac,但它并没有解决我的问题。下载文件失败时,我在 XCode 控制台中没有得到任何输出。最后我得请你看看这个。 speedy.sh/cHMds/EventTicket2678239.pkpass 我已经删除了 webServiceURL,因为我知道这种情况不需要它。我已使用此证书进行签名 - pokit.org/get/img/648f7a006e1964bb02fb78551e15d3f2.jpg
  • 不是证书问题 - 问题出在键盘和椅子之间!
猜你喜欢
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多