2012-11-02 3 views
1

Apple APNS (Apple Push Notification Server)와 작동하는 Java 응용 프로그램이 있습니다. 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

이 오류의 가장 큰 원인은 프로덕션 토큰을 샌드 박스 서버 또는 샌드 박스 토큰을 프로덕션 서버로 보내는 것입니다.

애드혹 프로필로 내 앱에 서명 했으므로 내 서버가 샌드 박스 푸시 서버와 통화하는 동안 프로덕션 푸시 서버를 사용하여 토큰을 생성하게되었습니다.

+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에서 지시에 따라 결국 그 사람들이 나를 위해 일했다.

관련 문제