2012-11-02 71 views
1

我有一个Java应用程序,它可以与Apple推送通知服务器(APNS)一起使用。我使用lib:JavaPNS.jar发送推送消息到iDevices。 但是,有时推送通知是不行的,我发现这样的错误:Apns:通过远程主机关闭的连接

[16:35:40] Andrew Balakhanov: 2012-10-27 04:00:00,616 WARN [com.notnoop.apns.internal.ApnsConnectionImpl] Failed to send message [email protected] trying again java.net.SocketException: Connection closed by remote host at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1339) at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:44) at java.io.OutputStream.write(OutputStream.java:58) at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:161) at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46) at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:52) at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36) at com.clinics.core.api.util.APN.sendReminderAlert(APN.java:55) at com.clinics.core.api.services.schedule.reminder.impl.ReminderSenderMobile.prepareAndSend(ReminderSenderMobile.java:190) at com.clinics.core.api.services.schedule.reminder.impl.ReminderSenderMobile.send(ReminderSenderMobile.java:132) at com.clinics.core.api.services.schedule.reminder.AbstractReminderFacade.generateAndSendReports(AbstractReminderFacade.java:53) at 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) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273) at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264) at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)

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

回答

8

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

我今天得到了这个确切的行为,直到我想出我已经使用Ad Hoc配置文件签署了我的应用程序,这使得应用程序使用生产推送服务器生成令牌,而我的服务器正在与沙箱推送服务器通话。

+0

现在我得到相同的例外,但我也可以得到推送消息。你知道如何解决这个问题吗?谢谢 :) – Felix

0

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

您可以通过调用PayloadBuilderisTooLong()函数来检查。

PayloadBuilder payload = APNS.newPayload(); 

// build your payload    

if (payload.isTooLong()) 
{ 
    // your payload is too long, a push() will result in the above exception 
} 
0

我面临的问题是,我使用生成我.p12证书文件中的指令是不正确的。我结束了从NWPusher和那些为我工作的指示。

相关问题