gpt4 book ai didi

java - 无法向 iOs 设备发送通知

转载 作者:行者123 更新时间:2023-11-29 00:24:42 25 4
gpt4 key购买 nike

我正在实现来自 .jar 的通知,通知在 中工作完美,但最近 中的通知给我一个错误,如下所示:

Delivery error: javapns.notification.exceptions.PayloadMaxSizeExceededException:
Total payload size exceeds allowed limit (payload is 259 bytes, limit is 256)

我使用的代码如下:

    //El metodo de multithread payload hace return unicamente cuando todos los hilos han finalizado de poner las notificaciones.
//Como no queremos esperar a que termine ponemos el codigo en un hilo separado para que pueda continuar y no se quede colgado el WS.
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());

// Creamos el payload con los campos que necesitemos
PushNotificationPayload payload = PushNotificationPayload.complex();

/* Customize the payload */
payload.addAlert(textoES);
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){
/* Push your custom payload */
notifications = Push.payload(payload, keystore, password, production, idsDispositivos);

// Si hay mas de 200 dispositivos creamos diferentes hilos utilizando el multithread payload
} else {
// Decidimos cuantos hilos vamos a crear y usar
int threads = 30;

if(dispositivos.size() > 200) {
threads = (int) Math.ceil(dispositivos.size()/200);
}else{
threads = 1;
}

// empezamos los hilos, esperamos a que terminen, y se coge la lista de notificaciones
notifications = Push.payload(payload, keystore, password, production, threads, idsDispositivos);
}

//Gestion de los resultados del envio de notificaciones
int dispEliminados = 0;
int dispNotificados = 0;

for (PushedNotification notification : notifications) {
if (notification.isSuccessful()) {
dispNotificados ++;
// Apple accepta la notificacion y debe enviarla
} else {
String invalidToken = notification.getDevice().getToken();

//obtenemos el indice del dispositivo en la lista de dispositivos
int index = idsDispositivos.indexOf(invalidToken);

//obtenemos la informacion del dispositivo a borrar
Integer usuario = dispositivos.get(index).getUsuario();
String idHardware = dispositivos.get(index).getIdHardwareDis();

//quitamos el dispositivo de nuestra BD
aBD.unregisterDispositivo(usuario, invalidToken,idHardware);
dispEliminados ++;

//Encontramos mas informacion sobre el problema ocurrido
// 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());
}
}
}
} 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();

有什么想法吗?

最佳答案

我设法消除了错误:

Delivery error: javapns.notification.exceptions.PayloadMaxSizeExceededException:
Total payload size exceeds allowed limit (payload is 259 bytes, limit is 256)

为此我不得不修改这一行:

PushNotificationPayload payload = PushNotificationPayload.complex(); 

其他:

PushNotificationPayload payload = PushNotificationBigPayload.complex();

关于java - 无法向 iOs 设备发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43365649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com