什么条件导致此存折错误?

时间:2013-03-22 23:45:11

标签: apple-push-notifications passbook

我该如何解决?

Passbook error [2013-03-22 11:10:28 -0700] 
Web service error for pass.com.example.purchase (https://www.example.com/): 
Server requested update to serial number '12345', but the pass was unchanged.

对于尚未更改的通行证,上述错误每天会发生几次。有些通行证已有几个月了。

1 个答案:

答案 0 :(得分:2)

从设备拨打电话时会发生此错误:

webServiceURL/version/devices/deviceLibraryIdentifier/registrations/passTypeIdentifier?passesUpdatedSince=tag

返回一个或多个序列号,您的网络服务会向后续调用返回302响应(或200响应,但会发送相同的.pkpass捆绑包):

webServiceURL/version/passes/passTypeIdentifier/serialNumber

如果是200响应,您将收到第二条错误消息,警告您Web服务忽略了上次修改的标头并返回了完整的未更改的传递数据。

通常,设备会在推送请求后请求更新的连续出版物。在这种情况下,您的通行证通常已更改,警报不会触发。

但是,Passbook也会在重新启动后立即调用更新序列,因此您可能会看到由于最近的6.1.3 iOS更新而导致的这些消息浪潮,因为新安装的Passbook库会调用您的服务以查看是否存在任何可用于其继承的旧通行证的更新。

另外值得注意的是,Passbook要求passTypeIdentifier更新连续出版物。如果您要发送一次通过的推送请求,但设备包含具有相同passTypeIdentifier的其他通行证,则您的网络服务可能无意中响应了这些旧通行证的序列号。

要解决此问题,您应该查看处理“获取序列号”调用的逻辑,以确保不会返回任何序列号,以便对“获取最新版本的通行证”进行302响应调用

此错误的精神在于最大限度地提高设备的缓存效率,并保护人们的数据计划免受不必要的密码下载(因为.pkpass捆绑包的重量通常超过500kb)。