存折后不要求最新版本的存折

时间:2015-02-23 12:32:35

标签: ios json apple-push-notifications passbook

我已经实施了Passbook网络服务,并且可以成功推送到APN;但我有一个问题,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不会继续并请求最新版本的通行证。相反,它停在那一点!

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

如果我有其他字符而不仅仅是数字,那么这个问题就不会发生。

这是一个例子,说明当序列号是数字时,JSON有效负载必须如何看,呃!

{"lastUpdated":"1424691339", "serialNumbers":["'1234567'"]}
相关问题