2012-09-05 11 views
6

Estoy usando Java-APNS framework para enviar notificaciones push a dispositivos iOS. Funciona muy bien (¡gracias al desarrollador!) Y puedo enviarlo a mis dispositivos cuando todo está configurado correctamente. Me gustaría, sin embargo, manejar adecuadamente los casos fallidos. Hay algunos códigos de error APNS documentados que habrá de recibir ciertos casos:Usando java-apns para detectar problemas con push

http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW1

¿Cómo puedo crear algunos de los casos fallar? Tengo mi propia clase que implementa ApnsDelegate y construye mi objeto ApnsService con mi delegado. He intentado pasar un token no válido en mi llamada para empujar, así como una cadena vacía para la carga útil:

service.push("ab", "") 

pero el método messageSent de mi ApnsDelegate todavía se llama a. Esperaría que esto termine en el método messageSendFailed en su lugar o tal vez en la conexión cerrada, pero no se llama a ninguno. ¿Alguien ha probado esto y lo ha puesto a funcionar? Aquí hay un ejemplo de mi clase ... De hecho, estoy haciendo esto en Scala, pero pensé que tendría mejor suerte si publicaba Java. Cuando se llama, esto simplemente imprimirá "Mensaje enviado a AB".

public class ApnsSender implements ApnsDelegate { 

    public void send(Notification Notification) { 
     ApnsService service = getApnsService(); 

     String payload = getPayload(notification); 

     service.push("ab", ""); 
    } 

    private ApnsService getApnsService() { ... } 

    private String getPayload(Notification notification) { ... } 

    public void messageSent(ApnsNotification message) { 
     String token = Utilities.toHexString(message.getDeviceToken()); 
     System.out.println("Message sent to " + token); 
    } 

    public void messageSendFailed(ApnsNotification message, Throwable e) { 
     System.out.println("Message failed"); 
    } 

    public void messageSent(DeliveryError e, Int messageIdentifier) { 
     System.out.println("Message closed with error code " + e.code()); 
    } 

} 
+0

Dejaré la pregunta por si alguien todavía quiere la respuesta, pero ahora estoy viendo [JavaPNS] (http://code.google.com/p/javapns) como una alternativa. Parece mucho mejor habilitado para fallas y se actualizó recientemente el mes pasado. Pude enviar fácilmente mis notificaciones automáticas y crear un caso fallido. java-apns no parece haber sido tocado en más de un año. – ShatyUT

Respuesta

5

Como se ha mencionado en mi comentario, me miró a los JavaPNS como alternativa y esto es un marco mucho mejor utilizar. También se está trabajando actualmente (último compromiso hace 2 días en el momento de la publicación) donde java-apns no se ha actualizado desde diciembre de 2011.

Sugiero que el uso de java-apns se sustituya por el uso de JavaPNS para cualquier persona tratando de enviar notificaciones push a dispositivos iOS. Reacciona a los paquetes de error recibidos y pasa los resultados a la persona que llama de manera fácil de acceder.

+1

Lo inverso parece ser cierto ahora (2014 para java-apns | 2012 para javaPNS) – Enigma

Cuestiones relacionadas