首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >safari ios无法打开passbook pkpass

safari ios无法打开passbook pkpass
EN

Stack Overflow用户
提问于 2014-02-11 23:03:30
回答 1查看 19.2K关注 0票数 5

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

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

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

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

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

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-12 00:35:57

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

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

代码语言:javascript
复制
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.}

在后面添加逗号:

代码语言:javascript
复制
"foregroundColor": "rgb(255,111,15)"

并更改密钥:

代码语言:javascript
复制
"description" : '"totally cool party"',

至:

代码语言:javascript
复制
"description" : "\"totally cool party\"",

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

** 更新 **

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

代码语言:javascript
复制
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

更改密钥:

代码语言:javascript
复制
"formatVersion": "1",

至:

代码语言:javascript
复制
"formatVersion":1,

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

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

代码语言:javascript
复制
"relevantDate" : "2014-02-28T12:00:00Z",

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

** 更新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 **

代码语言:javascript
复制
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密钥更改为:

代码语言:javascript
复制
"relevantDate" : "2014-05-28T12:00:00Z",
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21705439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档