【问题标题】:PK Pass not updated in Wallet app on pull to refreshPK Pass 未在 Wallet 应用程序中更新拉取刷新
【发布时间】:2016-04-06 12:44:34
【问题描述】:

我已成功通过邮件将通行证添加到钱包。我在电子钱包应用程序中看到了通行证,但是当我在通行证背面拉动以刷新时,我无法看到更新的通行证。以下是日志:

passd[119] <Warning>: Verifying structure and signature for pass pass.com.test.pass/‎1
passd[119] <Warning>: Signature validation: succeeded
passd[119] <Warning>: Generating POST request with URL <my_https_url/api/PassRegistration/v1/devices/70e435342e38df4e4346e779c6dff6e3/registrations/pass.com.test.pass/%25E2%2580%258E1>
passd[119] <Warning>: Request contains header field <Authorization: ApplePass my_token>
passd[119] <Warning>: Request contains body dictionary {
        pushToken = 93b5d5cxxxxxxxxxxxxxxxxxxxxxxxxxxx_similar;
    }
passd[119] <Warning>: Register task (for device 70e435342e38df4e4346e779c6dff6e3, pass type pass.com.test.pass, serial number ‎1; with web service url my_https_url/api/PassRegistration/) got response with code 201

passd[119] <Warning>: Generating GET request with URL <my_https_url/api/PassRegistration/v1/devices/70e435342e38df4e4346e779c6dff6e3/registrations/pass.com.test.pass>
passd[119] <Warning>: Get serial #s task (for device 70e435342e38df4e4346e779c6dff6e3, pass type pass.com.test.pass, last updated (null); with web service url my_https_url/api/PassRegistration/) got response with code 200
passd[119] <Warning>: Get serial numbers task completed with update tag 1459943482, serial numbers (
        1
    )
passd[119] <Warning>: Get pass task (pass type pass.com.test.pass, serial number ‎1, if-modified-since (null); with web service url my_https_urlapi/PassRegistration/) got response with code 200
passd[119] <Warning>: Verifying structure and signature for pass pass.com.test.pass/1
passd[119] <Warning>: Signature validation: succeeded
passd[119] <Warning>: Get pass task (pass type pass.com.test.pass, serial number ‎1, if-modified-since (null); with web service url my_https_url/api/PassRegistration/) encountered error: Requested serial number ‎1, received serial number 1
passd[119] <Warning>: Get pass task (pass type pass.com.test.pass, serial number ‎1, if-modified-since (null); with web service url my_https_url/api/PassRegistration/) will retry after 60 seconds

我的通行证的某些部分如下所示:

 "storeCard": {
    "headerFields": [
      {
        "key": "lessons",
        "label": "Points",
        "value": "200"
      }
    ],

在更新 Web 服务调用时,我以二进制格式传递了相同的通行证,但点值为 500。预期的输出是将点数显示为 500 而不是 200。我看到 “无法更新通行证” em> 刷新完成后的消息。我正在使用 IOS 9.2.1 在 iPhone4s 中进行测试。

我转介:https://github.com/yuchaoonline/ytoo.service/blob/master/dotnet-passbook-master/Passbook.Sample.Web/Controllers/PassRegistrationController.cs

BinaryFormatter() 的方法不起作用,所以我根据https://github.com/horizon-institute/AffectiveComputingCloud/blob/master/AffectiveComputingCloud/RestAPIWebRole/Formatter/BinaryMediaTypeFormatter.cs 的引用更改为BinaryMediaTypeFormatter()

我尝试了以下标头参数:

response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.apple.pkpass");
response.Content.Headers.LastModified = DateTime.UtcNow;
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = "pass.pkpass";
response.Content.Headers.ContentDisposition.Name = "pass.pkpass";

【问题讨论】:

  • 控制台输出的最后一条语句告诉我您的 Web 服务没有响应新的 .pkpass 包。当您说“以二进制格式响应”时,您要发送什么来响应最终调用?
  • 我将 generatedPass 字节数组响应为: response.Content = new ObjectContent(generatedPass, new BinaryMediaTypeFormatter());
  • 你是如何设置标题的? - 你的内容类型是什么?
  • 我认为是 application/octet-stream 基于这个语句:SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/octet-stream"));
  • 根据文档:application/vnd.apple.

标签: ios objective-c passbook passkit


【解决方案1】:

似乎存在多个问题,例如错误的内容类型。将内容类型更改为 application/vnd.apple.pkpass 并使用更新的日期传递更新的通行证可以解决问题。

【讨论】:

  • 你能列出所有错误的地方吗.. 或者分享更新的 api-controller 的代码?
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 2012-05-15
  • 1970-01-01
  • 2018-02-09
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 2012-08-14
相关资源
最近更新 更多