代码之家  ›  专栏  ›  技术社区  ›  rmosolgo

Passbook文件在Safari OSX上打开,但不是Safari iOS

  •  1
  • rmosolgo  · 技术社区  · 10 年前

    我正在尝试将Passbook添加到我的应用程序中。我整天都在摆弄它,但还是没有运气!

    在OSX浏览器上工作

    当我在本地(OSX)工作时,我在Chrome和Safari中下载存折,它们打开得很好:

    image

    在iOS浏览器上默默失败

    然而,如果我使用iOS模拟器+移动Safari,我会收到一条错误消息 无日志消息 :

    image

    如果我使用iPad(iOS 8和9),我会得到相同的行为:错误消息+日志中没有任何内容。

    一件疯狂的事 :我们确实有 在运行iOS 9的iPhone上成功打开,但仅此而已。之前在iOS 8上使用iPhone的尝试没有成功。

    在iMessage上工作=>网间网操作系统

    我的同事从这个问题中下载了文件,并通过iMessage&已成功安装。这是什么!!

    示例文件

    这里有一个例子 .pkpass 文件: http://rmosolgo.github.io/assets/rm_example.pkpass

    我尝试过的

    内容类型标题

    我已经确定我使用了正确的内容类型。以下是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请求中似乎遇到了:

    image

    有效的JSON

    我试着拉开拉链 .pkpass 并检查 pass.json 。一切都很好!

    现在怎么办??

    我见过很多关于这方面的SO问题,但它们都涉及某种日志输出。我没有得到任何日志输出!我能做什么?你有什么建议吗??

    非常感谢!

    2 回复  |  直到 10 年前
        1
  •  2
  •   PassKit    10 年前

    首先,您托管文件的github服务器没有发送正确的 Content-Type 标题:

    $ 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
    

    当提供正确的头部时,通道正确加载和摄取。

    但是,日志表明您的注册web服务设置不正确,正在发出 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
    

    Added Pass Front Added Pass Back

        2
  •  1
  •   rmosolgo    10 年前

    不要在iPad上测试存折——它似乎不起作用。对我来说,如果我使用iPhone,一个真正的iPhone和iOS模拟器都能工作!

    推荐文章