ios - safari ios 无法打开存折 pkpass

标签 ios safari content-type passbook

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

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

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

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

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

有什么想法吗?

最佳答案

查看您的 .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)"

并更改 key :

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

到:

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

然后重新编译您的 .pkpass 包,您应该就可以了。


** 更新 **

您的 pass 现在失败了,因为您在需要整数时为 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

更改 key :

"formatVersion": "1",

收件人:

"formatVersion":1,

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

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

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

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


** 更新 2 **

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

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

此外,您的通行证不包含 authenticationToken key 。在指定 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 key 仍然不是有效的 ISO8601 日期!

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

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

关于ios - safari ios 无法打开存折 pkpass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705439/

相关文章:

ios - 将 TableView 部分标题传递给另一个 View 的导航栏标题

ios - 在iOS上进行动量滚动(-webkit-overflow-scrolling)可以进行其他所有操作

javascript - Safari 返回值 "normal"为 "line-height"样式

javascript - 索引不在允许的范围内

javascript - Angular $response GET 请求删除内容类型

email - 多部分/替代内容类型是否需要内容传输编码?

android - 为 Rest 客户端设置 Json 内容类型

iphone - iOS iPhone 中的可拖动按钮,使其在触摸结束后重新定位到其原始位置。

ios - 如何让 Xcode 6 生成的 XLIFF 文件导入回 Xcode - 重命名是不够的

ios - UITabbar背景图片iPhone 6问题