我已经实现了Passbook网络服务,并且可以成功地推送到APN;但是,由于Passbook没有请求最新版本的pass,我遇到了一个问题。当我向给定的设备推送一个新的通知时,设备将得到它,Passbook向my服务发送一个请求,询问与该设备相关联的序列号。我的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不继续,并要求最新版本的通行证。相反,它停止在这一点!
有人能帮忙吗?
发布于 2015-02-25 07:54:40
解决了!Apple说,JSON有效负载中的serialNumbers
条目必须是一个String数组。这还不足以使它发挥作用。还必须引用序列号字符串,以便设备认为它们是有效的。不幸的是,设备控制台中的转储消息无助于解决这个问题,文档也是如此。我假设PassKit在传递JSON有效负载时将看起来像Integer的字符串转换为NSNumber
,而不是NSString
。
也许,如果我有其他字符而不仅仅是数字,这个问题就不会发生。
这是一个例子,说明当序列号是数字时,JSON有效载荷必须如何看待,嗯!
{"lastUpdated":"1424691339", "serialNumbers":["'1234567'"]}
https://stackoverflow.com/questions/28673912
复制相似问题