1

我有一个 Java 应用程序,它与 Apple Push Notification Server (APNS) 一起使用。我使用 lib: JavaPNS.jar向 iDevices 发送推送消息。但是,有时推送通知不起作用,我发现了这样的错误:

[16:35:40] Andrew Balakhanov:2012-10-27 04:00:00,616 WARN [com.notnoop.apns.internal.ApnsConnectionImpl] 无法发送消息 com.notnoop.apns.EnhancedApnsNotification@af310b99 ......再试一次java.net.SocketException:com.sun.net.ssl.internal.ssl.AppOutputStream.write 的 com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1339) 的远程主机关闭了连接(AppOutputStream.java:44) 在 java.io.OutputStream.write(OutputStream.java:58) 在 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) 在 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。在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.springframework.util.MethodInvoker。在 org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86) 在 org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86) 在 org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264) 调用(MethodInvoker.java:273) .quartz.core.JobRunShell.run(JobRunShell.java:202) 在 org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)

你能告诉我,错误是什么意思吗?是不是意味着,Apple 服务器禁止了我,是否意味着我向它发送了太多请求?

4

3 回答 3

9

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

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

于 2012-11-12T15:50:57.487 回答
1

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

您可以通过调用PayloadBuilder'sisTooLong()函数进行检查。

PayloadBuilder payload = APNS.newPayload();

// build your payload               

if (payload.isTooLong())
{
    // your payload is too long, a push() will result in the above exception
}
于 2013-07-21T13:36:50.440 回答
0

我面临的问题是我用来生成.p12证书文件的说明不正确。我最终遵循了NWPusher的指示,这些指示对我有用。

于 2016-03-27T14:58:44.167 回答