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

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'"]

【讨论】:

以上是关于存折推送后不要求最新版本的主要内容,如果未能解决你的问题,请参考以下文章

将角度/材质包更新到最新版本后,角度材质自动完成组件不显示项目

如何使用 git CLI 获取最新版本

TortoiseGit尝试推送时要求我输入密码

第八节《冲突解决》

我的电脑安装jdk11版本显示不兼容,但是我们老师要求我们使用最新版的,怎么办?

Git关于远程分支--我的理解:远程分支永远是存储最新的版本。