Ios 验证APN推送令牌

Ios 验证APN推送令牌,ios,push-notification,apple-push-notifications,Ios,Push Notification,Apple Push Notifications,我有一个服务器端java应用程序,可以向apple服务器发送批量推送消息。最近我收到了多个SSLSocketException:连接被远程主机关闭或SSLSocketException:管道导出中断。 我知道,如果我发送的令牌无效,苹果会强制关闭连接。我也有一个反馈循环,但失败的代币从来没有出现在反馈循环上,因为它们甚至没有被苹果接受 是否有任何算法或方法可以知道为什么设备令牌“无效”?为什么设备令牌无效? 假设您从Apple获得了所有设备令牌,并且没有创建虚拟令牌,那么导致无效令牌的最有可能的

我有一个服务器端java应用程序,可以向apple服务器发送批量推送消息。最近我收到了多个SSLSocketException:连接被远程主机关闭SSLSocketException:管道导出中断。

我知道,如果我发送的令牌无效,苹果会强制关闭连接。我也有一个反馈循环,但失败的代币从来没有出现在反馈循环上,因为它们甚至没有被苹果接受


是否有任何算法或方法可以知道为什么设备令牌“无效”?

为什么设备令牌无效?

假设您从Apple获得了所有设备令牌,并且没有创建虚拟令牌,那么导致无效令牌的最有可能的原因是DB同时具有生产令牌和沙盒令牌

如何查找哪些令牌无效:

您应该使用增强的APN格式,在该格式中指定消息ID。在发送给Apple的每条消息之后,您应该在将超时设置为足够大的值后尝试从套接字读取。Apple将向您发送无效令牌的错误响应,其中指定消息ID。这将让您找到无效令牌并将其从数据库中删除。 请注意,您应该仅使用此方法(在长时间超时的每条消息之后读取响应)来清理数据库。在数据库从无效令牌中清除后,您不想使用它,因为它会使通知传递非常缓慢