Apns:远程主机关闭连接

时间:2012-11-02 09:10:40

标签: java apple-push-notifications

我有一个Java应用程序,可与Apple推送通知服务器(APNS)配合使用。我使用lib: JavaPNS.jar 将发送推送消息发送到iDevices。 但是,有时推送通知不起作用,我发现了这样的错误:

  

[16:35:40] Andrew Balakhanov:2012-10-27 04:00:00,616警告   [com.notnoop.apns.internal.ApnsConnectionImpl]无法发送消息   com.notnoop.apns.EnhancedApnsNotification@af310b99 ...再试一次   java.net.SocketException:由远程主机关闭的连接   com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1339)   在   com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:44)   在java.io.OutputStream.write(OutputStream.java:58)at   com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:161)   在   com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46)   在   com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:52)   在   com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36)   在com.clinics.core.api.util.APN.sendReminderAlert(APN.java:55)at   com.clinics.core.api.services.schedule.reminder.impl.ReminderSenderMobile.prepareAndSend(ReminderSenderMobile.java:190)   在   com.clinics.core.api.services.schedule.reminder.impl.ReminderSenderMobile.send(ReminderSenderMobile.java:132)   在   com.clinics.core.api.services.schedule.reminder.AbstractReminderFacade.generateAndSendReports(AbstractReminderFacade.java:53)   在   com.clinics.core.api.services.schedule.reminder.ReminderJob.doIt(ReminderJob.java:64)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)   在java.lang.reflect.Method.invoke(Method.java:597)at   org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)   在   org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean $ MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264)   在   org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)   在org.quartz.core.JobRunShell.run(JobRunShell.java:202)at   org.quartz.simpl.SimpleThreadPool $ WorkerThread.run(SimpleThreadPool.java:525)

请告诉我,这个错误意味着什么?这是苹果服务器禁止我的意思,这是否意味着我向它发送了太多的请求?

3 个答案:

答案 0 :(得分:9)

此错误的最可能原因是您将生产令牌发送到沙箱服务器或沙箱令牌发送到生产服务器。

我今天得到了这个确切的行为,直到我发现我使用Ad Hoc配置文件签署了我的应用程序,这使得应用程序使用生产推送服务器生成令牌,而我的服务器正在与沙盒推送服务器通信。 / p>

答案 1 :(得分:1)

当有效负载太长时,也会出现此错误。

您可以致电PayloadBuilder的{​​{1}}功能进行检查。

isTooLong()

答案 2 :(得分:0)

我遇到的问题是我用来生成Input 5, 7, 12, Output 72.0000000 Input 8.5, 4.3, 2.7, Output 49.5000000 Input 100, 200, 300, Output 45000.0000000 Input 5, 7, 12, Output 72.0000000 Input 0.222, 0.333, 0.555, Output 0.1540125 证书文件的说明不正确。我最后按照NWPusher的指示和那些为我工作的指示。