1

我该如何解决?

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.

对于未更改的通行证,上述错误每天会出现数次。有些通行证是几个月前的。

4

1 回答 1

3

当从设备调用以下内容时会发生此错误:

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

返回一个或多个序列号,并且您的 Web 服务将302响应(或200响应但传递相同的 .pkpass 包)返回到后续调用:

webServiceURL/version/passes/passTypeIdentifier/serialNumber

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

通常,设备会在推送请求之后请求更新的序列号。在这种情况下,您的通行证通常已更改并且不会触发警报。

但是,Passbook 还会在重新启动后立即调用更新序列,因此由于最近的 6.1.3 iOS 更新,您可能会看到一波这样的消息,因为新安装的 Passbook 库会调用您的服务以查看是否有可用的更新它继承的旧通行证。

另外值得注意的是,Passbook 要求更新连续剧passTypeIdentifier。如果您正在发出一个单通道的推送请求,但该设备包含具有相同的其他通道passTypeIdentifier,您的 Web 服务可能会无意中响应这些旧通道的序列号。

要修复它,您应该查看处理“获取序列号”调用的逻辑,以确保不会返回任何序列号来302响应“获取最新版本的通行证”调用。

此错误的主要目的是最大限度地提高设备上的缓存效率,并保护人们的数据计划免受不必要的通行证下载(因为 .pkpass 包通常超过 500kb)。

于 2013-03-23T03:27:28.580 回答