3

我遇到了 APNS 的奇怪问题。我使用 com.notnoop.apns 库,当我尝试将相同的消息推送到 40 台设备时,我得到了

ApnsConnectionImpl : Failed to send message 
com.notnoop.apns.EnhancedApnsNotification@be443877... trying again
java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
...

一切顺利,当我尝试将相同的消息推送到 4、10 甚至 15 台设备时。

我尝试将带有推送令牌的集合从 40 拆分为 4*10 并在 foreach 中推送此通知,但第二次尝试我遇到了同样的问题。

这是带有推送方法的代码:

//prepared collection and message
private void sendMessage(Collection<String> ids, PayloadBuilder message) {
try{
    service.push(ids, message.build);       
}catch(Exception e) {
    logger.debug("APNS ERROR : size of collection - " + ids.size());
}

}

服务构造器:

  try {
        service = APNS.newService()
                .withCert(pathToCertificate, certificatePasswd)
                .withProductionDestination()
                .build();
    } catch(IOException e){
        e.printStackTrace();
    }

我用不同的推送令牌集合(集合从 1 到 40 个令牌随机)用这种方法午餐 10 次,有一次我遇到了这个异常(所有令牌都是正确的)。是否可以无缘无故地通过 APNS 重置连接?如果我失去连接,该怎么办?重新连接并尝试再向设备推送一条丢失时间的消息?请帮忙,我没有想法。

4

2 回答 2

4

我推荐 Java PNS 库:http ://code.google.com/p/javapns/ 。我在我的一个项目中使用了它,它工作正常。

于 2013-02-21T09:55:20.443 回答
1

您的数据库中可能有无效的设备令牌。

以下是一些可以帮助您的类似问题:

验证设备令牌

另一个

多一个

最后一个

此外,您应该阅读这篇关于Apple Push Notification Service 问题的精彩文章。

于 2013-02-21T02:11:02.177 回答