存折推送后不要求最新版本
Posted
技术标签:
【中文标题】存折推送后不要求最新版本【英文标题】:Passbook not requesting latest version after push 【发布时间】:2015-02-23 12:32:34 【问题描述】:我已经实现了 Passbook 网络服务,并且可以成功推送到 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 不继续请求最新版本的通行证。相反,它会在那个时候停止!
有人可以帮忙吗?
【问题讨论】:
【参考方案1】:解决了! Apple 文档说 JSON 有效负载中的 serialNumbers
条目必须是字符串数组。这还不足以让它发挥作用。还必须引用序列号字符串以使设备认为它们有效。不幸的是,设备控制台中的转储消息无助于解决这一问题,文档也无济于事。我假设 PassKit 在传递 JSON 有效负载时会将看起来像 Integer 的字符串转换为 NSNumber
,而不是 NSString
。
如果我有其他字符而不是数字,则可能不会发生此问题。
这是序列号为数字时 JSON 有效负载的外观示例,呵呵!
"lastUpdated":"1424691339", "serialNumbers":["'1234567'"]
【讨论】:
以上是关于存折推送后不要求最新版本的主要内容,如果未能解决你的问题,请参考以下文章
将角度/材质包更新到最新版本后,角度材质自动完成组件不显示项目