iOSデバイスのバルク通知を送信するときに問題が発生しました。デバイスを数個(1〜20個は多かれ少なかれ)送信すると問題なく動作しますが、バルク送信3000 +)それは私に次のエラーを与えている:バルクiOS通知を送信する際の問題
[2017-04-27 15:12:07] ERROR (Notificaciones:347) - IOS: Error en envio notificaciones - CommunicationException: javapns.communication.exceptions.CommunicationException: Communication exception: java.net.ConnectException: Expir tiempo de conexiConnection timed out) at javapns.communication.ConnectionToAppleServer.getSSLSocket(ConnectionToAppleServer.java:156) at javapns.notification.PushNotificationManager.initializeConnection(PushNotificationManager.java:106) at javapns.notification.transmission.NotificationThread.runList(NotificationThread.java:215) at javapns.notification.transmission.NotificationThread.run(NotificationThread.java:199) at java.lang.Thread.run(Thread.java:745) Caused by: java.net.ConnectException: Expir tiempo de conexiConnection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:576) at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:635) at sun.security.ssl.SSLSocketImpl.(SSLSocketImpl.java:423) at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88) at javapns.communication.ConnectionToAppleServer.getSSLSocket(ConnectionToAppleServer.java:153) ... 4 more
は私のコードは次のとおりです:
private static void realizaEnvioIOSLista (final List<DispositivoDto> dispositivos, final String textoES, final String textoCA, final String textoEN, final String tipoNotificacion){
Thread thread = new Thread(){
public void run(){
try {
final List<String> idsDispositivos = new ArrayList<String>();
final String keystore = XmlUtils.dirCertIOS + XmlUtils.nomCertificado;
final String password = XmlUtils.password;
final boolean production = XmlUtils.production;
//Obtenemos los ids de los dispositivos
for(DispositivoDto r : dispositivos)
idsDispositivos.add(r.getIdDispositivo());
PushNotificationPayload payload = PushNotificationBigPayload.complex();
/* Customize the payload */
payload.addAlert(textoES);
// payload.addSound('default');
payload.setContentAvailable(true);
payload.addCustomDictionary("es", textoES);
payload.addCustomDictionary("en", textoCA);
payload.addCustomDictionary("ca", textoEN);
payload.addCustomDictionary("tiponotificacion", tipoNotificacion);
List<PushedNotification> notifications = new ArrayList<PushedNotification>();
if(idsDispositivos.size()<= 200){
notifications = Push.payload(payload, keystore, password, production, idsDispositivos);
} else {
int threads = 1;
if(dispositivos.size() > 200) {
threads = (int) Math.ceil(dispositivos.size()/200);
}
notifications = Push.payload(payload, keystore, password, production, threads, idsDispositivos);
}
int dispEliminados = 0;
int dispNotificados = 0;
for (PushedNotification notification : notifications) {
if (notification.isSuccessful()) {
dispNotificados ++;
} else {
String invalidToken = notification.getDevice().getToken();
int index = idsDispositivos.indexOf(invalidToken);
Integer usuario = dispositivos.get(index).getUsuario();
String idHardware = dispositivos.get(index).getIdHardwareDis();
aBD.unregisterDispositivo(usuario, invalidToken,idHardware);
dispEliminados ++;
// Exception theProblem = notification.getException();
// theProblem.printStackTrace();
//If the problem was an error-response packet returned by Apple, get it
ResponsePacket theErrorResponse = notification.getResponse();
if (theErrorResponse != null){
logNot.info("IOS: " +theErrorResponse.getMessage());
}
}
}
logNot.info("IOS: Dispositivos Notificados correctamente: " + dispNotificados);
logNot.info("IOS: Dispositivos Eliminados: " +dispEliminados);
} catch (CommunicationException e) {
logNot.error("IOS: Error en envio notificaciones - CommunicationException: ",e);
} catch (KeystoreException e) {
logNot.error("IOS: Error en envio notificaciones - KeystoreException: ",e);
} catch (JSONException e) {
logNot.error("IOS: Error en envio notificaciones - JSONException: ",e);
} catch (Exception e) {
logNot.error("IOS: Error en envio notificaciones",e);
}
}
};
thread.start();
}
間違って何か? Appleサーバーへの最大接続数はどのくらいですか?どんな助けも歓迎です。