safari ios无法打开存折pkpass

luc*_*fik 5 safari content-type ios passbook

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

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

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

我的文件和示例文件都将Content Type设置为application/vnd.apple.pkpass

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

有任何想法吗?

Pas*_*Kit 11

查看了.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.}
Run Code Online (Sandbox Code Playgroud)

之后添加逗号:

"foregroundColor": "rgb(255,111,15)"
Run Code Online (Sandbox Code Playgroud)

并更改密钥:

"description" : '"totally cool party"',
Run Code Online (Sandbox Code Playgroud)

至:

"description" : "\"totally cool party\"",
Run Code Online (Sandbox Code Playgroud)

然后重新编译你的.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
Run Code Online (Sandbox Code Playgroud)

更改密钥:

"formatVersion": "1",
Run Code Online (Sandbox Code Playgroud)

至:

"formatVersion":1,
Run Code Online (Sandbox Code Playgroud)

此外,您的相关日期似乎不是ISO8061格式,这也会导致传递被拒绝.

要修复,请将relevantDate密钥更改为:

"relevantDate" : "2014-02-28T12:00:00Z",
Run Code Online (Sandbox Code Playgroud)

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


** 更新2**

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

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

你的传球也没有authenticationToken钥匙.这是指定a时的必需密钥webServiceURL(阅读Passbook Web服务手册!)

调试无法访问Xcode的Passbook将是非常棘手的,如果不是不可能的话.建议购买Mac,或采用Virualise Mac OSX的多种方式之一或在PC硬件上运行Mac OSX.


** 更新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.
Run Code Online (Sandbox Code Playgroud)

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

要修复,请将relevantDate密钥更改为:

"relevantDate" : "2014-05-28T12:00:00Z",
Run Code Online (Sandbox Code Playgroud)