推送后存折不请求最新版本

Passbook not requesting latest version after push

我实现了Passbook webservice,可以成功推送到APNs;但是我的 Passbook 没有要求最新版本的通行证有问题。 当我向给定设备推送新通知时,设备会收到通知,然后 Passbook 会向我的 Web 服务发送请求,询问与该设备关联的序列号。我的 Web 服务发送一个带有 200 http 状态代码的响应,其中 JSON 有效负载类似于:

{"lastUpdated":"1424691339", "serialNumbers":["1234567"]}

设备控制台显示如下:

Feb 23 11:34:54 My-iPhone passd[162] <Warning>: Generating GET request with URL <http://192.168.1.138:8000/api/v1/devices/297f6e6ed478540ccc05e1962cce41e6/registrations/pass.com.example.coupon?passesUpdatedSince=1424690611>
Feb 23 11:34:55 My-iPhone passd[162] <Warning>: Get serial #s task (for device 297f6e6ed478540ccc05e1962cce41e6, pass type pass.com.example.coupon, last updated 1424690611; with web service url http://192.168.1.138:8000/api/) got response with code 200
Feb 23 11:34:55 My-iPhone passd[162] <Warning>: Get serial numbers task completed with update tag 1424691339, serial numbers (
        1234567
    )

我不明白为什么 Passbook 不继续并请求最新版本的通行证。相反,它会在那一点停止!

有人可以帮忙吗?

已解决! Apple 文档说 JSON 负载中的 serialNumbers 条目必须是一个字符串数组。这还不足以让它发挥作用。序列号字符串也必须被引用以使设备认为它们有效。不幸的是,设备控制台中的转储消息对解决这个问题没有帮助,文档也没有帮助。我假设 PassKit 在传递 JSON 有效负载时将看起来像整数的字符串转换为 NSNumber,而不是 NSString.

可能如果我有其他字符而不是数字,就不会出现这个问题了。

这是当序列号为数字时 JSON 负载必须看起来的示例,呃!

{"lastUpdated":"1424691339", "serialNumbers":["'1234567'"]}