存折文件在 Safari OSX 上打开,但在 Safari iOS 上不打开
Passbook file opens on Safari OSX, but not Safari iOS
我正在尝试将存折添加到我的应用程序中。折腾了一天还是不行!
适用于 OSX 浏览器
当我在本地 (OSX) 工作时,我在 Chrome 和 Safari 中下载存折,它们打开得很好:
在 iOS 浏览器上静默失败
但是,如果我使用 iOS 模拟器 + Mobile Safari,我会收到一条错误消息并且 没有日志消息 :
如果我使用 iPad (iOS 8 & 9),我会得到相同的行为:错误消息 + 日志中没有任何内容。
一件疯狂的事情:我们确实有一个在iPhone 运行 [=73]上成功打开=] 9,仅此而已。之前在 iOS 8 上使用 iPhone 的尝试没有成功。
适用于 iMessage => iOS
我的同事从这个问题中下载了文件,通过 iMessage 将其发送到他的设备并成功安装。这到底是怎么回事!!
示例文件
这是一个示例 .pkpass
文件:http://rmosolgo.github.io/assets/rm_example.pkpass
我试过的
Content-Type header
我确定我使用了正确的内容类型。这是 Rails 代码:
format.pkpass {
# This is just for testing: visit .pkpass to download a pass file just like the
# one that would be attached to the email
pkpass = pass.to_pkpass
send_data(pkpass.stream.string,
filename: pass.to_pkpass_filename,
content_type: "application/vnd.apple.pkpass"
)
}
它似乎在 GET 请求中遇到:
有效JSON
我尝试解压缩 .pkpass
并检查 pass.json
。一切都好!
现在怎么办??
我已经看到很多关于此的问题,但它们都涉及某种日志输出。我没有得到任何日志输出!我能做什么?你有什么建议吗??
非常感谢!
首先,您托管文件的 github 服务器没有发送正确的 Content-Type
header:
$ curl -I http://rmosolgo.github.io/assets/rm_example.pkpass
HTTP/1.1 200 OK
Server: GitHub.com
Content-Type: application/octet-stream
Last-Modified: Wed, 16 Sep 2015 23:00:53 GMT
Access-Control-Allow-Origin: *
Expires: Thu, 17 Sep 2015 01:41:38 GMT
Cache-Control: max-age=600
Content-Length: 748362
Accept-Ranges: bytes
Date: Thu, 17 Sep 2015 01:31:38 GMT
Age: 0
X-Served-By: cache-iad2133-IAD
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1442453498.285053,VS0,VE7
Vary: Accept-Encoding
X-Cache: MISS from liveandlearnatlanta.hotelwifi.com
Via: 1.1 varnish, 1.1 liveandlearnatlanta.hotelwifi.com (squid/3.3.2)
Connection: keep-alive
当使用正确的 headers 时,传递正确加载和摄取。
但是,日志表明您的注册网络服务设置不正确,发出的是 404
响应而不是预期的 201
。
Sep 16 21:35:35 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:35 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:42 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:42 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:43 iPhone passd[140] <Warning>: Generating POST request with URL <https://check-ins-staging.planningcenteronline.com/v1/devices/b0d117f8963f3d5103637f4ca990e69a/registrations/pass.com.PlanningCenter.CheckIn/89709>
Sep 16 21:35:43 iPhone passd[140] <Warning>: Request contains header field <Authorization: ApplePass 2ece029fc4b7abe8aedfe95fe2375815e2504cc58ad3111689e29f08f8dbb689>
Sep 16 21:35:43 iPhone passd[140] <Warning>: Request contains body dictionary {
pushToken = 5d1844d7403dfeca24f8a2275c3161a801515f94c1e07909de5ea6aa85f08479;
}
Sep 16 21:35:43 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:43 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:43 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:43 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:43 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:43 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:44 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:44 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:44 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:44 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:44 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) got response with code 404
Sep 16 21:35:44 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) encountered error: Unexpected response code 404
Sep 16 21:35:44 iPhone passd[140] <Warning>: Generating POST request with URL <https://check-ins-staging.planningcenteronline.com/v1/log>
Sep 16 21:35:44 iPhone passd[140] <Warning>: Request contains body dictionary {
logs = (
"[2015-09-16 21:35:44 -0400] Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) encountered error: Unexpected response code 404"
);
}
Sep 16 21:35:44 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) will retry after 10 seconds
Sep 16 21:35:45 iPhone passd[140] <Warning>: Log task (pass type pass.com.PlanningCenter.CheckIn, web service url https://check-ins-staging.planningcenteronline.com) got response with code 200
Sep 16 21:35:54 iPhone passd[140] <Warning>: Generating POST request with URL <https://check-ins-staging.planningcenteronline.com/v1/devices/b0d117f8963f3d5103637f4ca990e69a/registrations/pass.com.PlanningCenter.CheckIn/89709>
Sep 16 21:35:54 iPhone passd[140] <Warning>: Request contains header field <Authorization: ApplePass 2ece029fc4b7abe8aedfe95fe2375815e2504cc58ad3111689e29f08f8dbb689>
Sep 16 21:35:54 iPhone passd[140] <Warning>: Request contains body dictionary {
pushToken = 5d1844d7403dfeca24f8a2275c3161a801515f94c1e07909de5ea6aa85f08479;
}
Sep 16 21:35:55 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) got response with code 404
Sep 16 21:35:55 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) encountered error: Unexpected response code 404
Sep 16 21:35:55 iPhone passd[140] <Warning>: Generating POST request with URL <https://check-ins-staging.planningcenteronline.com/v1/log>
Sep 16 21:35:55 iPhone passd[140] <Warning>: Request contains body dictionary {
logs = (
"[2015-09-16 21:35:55 -0400] Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) encountered error: Unexpected response code 404"
);
}
Sep 16 21:35:55 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) will retry after 10 seconds
不要在 iPad 上测试存折 -- 它似乎不起作用。对我来说,如果我使用 iPhone!
,那么真正的 iPhone 可以工作,iOS 模拟器也可以工作
我正在尝试将存折添加到我的应用程序中。折腾了一天还是不行!
适用于 OSX 浏览器
当我在本地 (OSX) 工作时,我在 Chrome 和 Safari 中下载存折,它们打开得很好:
在 iOS 浏览器上静默失败
但是,如果我使用 iOS 模拟器 + Mobile Safari,我会收到一条错误消息并且 没有日志消息 :
如果我使用 iPad (iOS 8 & 9),我会得到相同的行为:错误消息 + 日志中没有任何内容。
一件疯狂的事情:我们确实有一个在iPhone 运行 [=73]上成功打开=] 9,仅此而已。之前在 iOS 8 上使用 iPhone 的尝试没有成功。
适用于 iMessage => iOS
我的同事从这个问题中下载了文件,通过 iMessage 将其发送到他的设备并成功安装。这到底是怎么回事!!
示例文件
这是一个示例 .pkpass
文件:http://rmosolgo.github.io/assets/rm_example.pkpass
我试过的
Content-Type header
我确定我使用了正确的内容类型。这是 Rails 代码:
format.pkpass {
# This is just for testing: visit .pkpass to download a pass file just like the
# one that would be attached to the email
pkpass = pass.to_pkpass
send_data(pkpass.stream.string,
filename: pass.to_pkpass_filename,
content_type: "application/vnd.apple.pkpass"
)
}
它似乎在 GET 请求中遇到:
有效JSON
我尝试解压缩 .pkpass
并检查 pass.json
。一切都好!
现在怎么办??
我已经看到很多关于此的问题,但它们都涉及某种日志输出。我没有得到任何日志输出!我能做什么?你有什么建议吗??
非常感谢!
首先,您托管文件的 github 服务器没有发送正确的 Content-Type
header:
$ curl -I http://rmosolgo.github.io/assets/rm_example.pkpass
HTTP/1.1 200 OK
Server: GitHub.com
Content-Type: application/octet-stream
Last-Modified: Wed, 16 Sep 2015 23:00:53 GMT
Access-Control-Allow-Origin: *
Expires: Thu, 17 Sep 2015 01:41:38 GMT
Cache-Control: max-age=600
Content-Length: 748362
Accept-Ranges: bytes
Date: Thu, 17 Sep 2015 01:31:38 GMT
Age: 0
X-Served-By: cache-iad2133-IAD
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1442453498.285053,VS0,VE7
Vary: Accept-Encoding
X-Cache: MISS from liveandlearnatlanta.hotelwifi.com
Via: 1.1 varnish, 1.1 liveandlearnatlanta.hotelwifi.com (squid/3.3.2)
Connection: keep-alive
当使用正确的 headers 时,传递正确加载和摄取。
但是,日志表明您的注册网络服务设置不正确,发出的是 404
响应而不是预期的 201
。
Sep 16 21:35:35 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:35 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:42 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:42 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:43 iPhone passd[140] <Warning>: Generating POST request with URL <https://check-ins-staging.planningcenteronline.com/v1/devices/b0d117f8963f3d5103637f4ca990e69a/registrations/pass.com.PlanningCenter.CheckIn/89709>
Sep 16 21:35:43 iPhone passd[140] <Warning>: Request contains header field <Authorization: ApplePass 2ece029fc4b7abe8aedfe95fe2375815e2504cc58ad3111689e29f08f8dbb689>
Sep 16 21:35:43 iPhone passd[140] <Warning>: Request contains body dictionary {
pushToken = 5d1844d7403dfeca24f8a2275c3161a801515f94c1e07909de5ea6aa85f08479;
}
Sep 16 21:35:43 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:43 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:43 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:43 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:43 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:43 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:44 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:44 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:44 iPhone passd[140] <Warning>: Verifying structure and signature for pass pass.com.PlanningCenter.CheckIn/89709
Sep 16 21:35:44 iPhone passd[140] <Warning>: Signature validation: succeeded
Sep 16 21:35:44 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) got response with code 404
Sep 16 21:35:44 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) encountered error: Unexpected response code 404
Sep 16 21:35:44 iPhone passd[140] <Warning>: Generating POST request with URL <https://check-ins-staging.planningcenteronline.com/v1/log>
Sep 16 21:35:44 iPhone passd[140] <Warning>: Request contains body dictionary {
logs = (
"[2015-09-16 21:35:44 -0400] Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) encountered error: Unexpected response code 404"
);
}
Sep 16 21:35:44 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) will retry after 10 seconds
Sep 16 21:35:45 iPhone passd[140] <Warning>: Log task (pass type pass.com.PlanningCenter.CheckIn, web service url https://check-ins-staging.planningcenteronline.com) got response with code 200
Sep 16 21:35:54 iPhone passd[140] <Warning>: Generating POST request with URL <https://check-ins-staging.planningcenteronline.com/v1/devices/b0d117f8963f3d5103637f4ca990e69a/registrations/pass.com.PlanningCenter.CheckIn/89709>
Sep 16 21:35:54 iPhone passd[140] <Warning>: Request contains header field <Authorization: ApplePass 2ece029fc4b7abe8aedfe95fe2375815e2504cc58ad3111689e29f08f8dbb689>
Sep 16 21:35:54 iPhone passd[140] <Warning>: Request contains body dictionary {
pushToken = 5d1844d7403dfeca24f8a2275c3161a801515f94c1e07909de5ea6aa85f08479;
}
Sep 16 21:35:55 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) got response with code 404
Sep 16 21:35:55 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) encountered error: Unexpected response code 404
Sep 16 21:35:55 iPhone passd[140] <Warning>: Generating POST request with URL <https://check-ins-staging.planningcenteronline.com/v1/log>
Sep 16 21:35:55 iPhone passd[140] <Warning>: Request contains body dictionary {
logs = (
"[2015-09-16 21:35:55 -0400] Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) encountered error: Unexpected response code 404"
);
}
Sep 16 21:35:55 iPhone passd[140] <Warning>: Register task (for device b0d117f8963f3d5103637f4ca990e69a, pass type pass.com.PlanningCenter.CheckIn, serial number 89709; with web service url https://check-ins-staging.planningcenteronline.com) will retry after 10 seconds
不要在 iPad 上测试存折 -- 它似乎不起作用。对我来说,如果我使用 iPhone!
,那么真正的 iPhone 可以工作,iOS 模拟器也可以工作