2012-07-03 18 views
12

He visto la aplicación de correo en mi iPhone (4S, iOS 5.1) actualiza automáticamente el recuento de la tarjeta si llega correo nuevo, incluso cuando la aplicación no se está ejecutando. Entonces, es posible lograr este comportamiento en mi aplicación también, ¿no?Notificación de inserción de Apple no cambia automáticamente la insignia de icono

Mi aplicación se registra satisfactoriamente para notificaciones push para los 3 tipos: distintivo, alerta y sonido. Configuración del teléfono está activada para los 3 tipos de notificaciones remotas para esta aplicación.

Mi aplicación recibe notificaciones remotas y muestra alerta, reproduce sonido, pero no actualiza el número de placa. Si abro la aplicación a través del botón Ver en la alerta, entonces mi aplicación puede leer el valor de la insignia perfectamente y puedo cambiar/quitar/configurar la insignia del icono del código.

¿Alguna razón específica por la cual iOS no puede cambiar la insignia de icono de mi aplicación automáticamente cuando llega la notificación? He visto todas las publicaciones similares, todas discuten sobre la configuración del teléfono o sobre los tipos de notificación que registró, o sobre la verificación de la carga útil que JSON incluye la insignia o no.

¿Hay algún otro motivo que pueda causar este problema?

Aquí está mi bloques de código:

Registro de APN se lanza todas las aplicaciones de tiempo -

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)]; 

token de dispositivo recibido casi al instante. Token se ha enviado al proveedor y recibo notificaciones. Alertas y sonidos funciona. Pero la insignia no tiene efecto automático hasta que lance la aplicación y la cambie manualmente. Por favor ayuda.

+0

¿está su insignia en +1 cuando envía la notificación? o solo 1? – mkral

+0

Por curiosidad, ¿para qué estás usando notificaciones push? – Wug

+0

@mkral, está configurado en 1 – zinnuree

Respuesta

20

El problema ya está solucionado. El servidor del proveedor enviaba el número de la insignia entre comillas (como cadena JSON, es decir, "9"). Es extraño que APNs/iOS no lo reconozca como entero. Ahora las citas se eliminan y funciona :)

27

También tuve este mismo problema. El ícono de la insignia no fue citado. Después de muchas horas de intentar modificar el JSON (después de verificar que la aplicación en el teléfono mostraba insignias, sonidos, alertas), el problema era que había agregado UIRemoteNotificationTypeNewsstandContentAvailability como uno de los tipos de alerta para los que se estaba registrando mi aplicación. (Me volví loco, simplemente escogiendo todo)

Por lo tanto, cuando UIRemoteNotificationTypeNewsstandContentAvailability también está en la mezcla, parece anular la función de permitir que los números de aps/badge actualicen el ícono de una aplicación. (Debe estar buscando para actualizar información quiosco)

+4

¡Gracias! "quiosco de prensa" resultó ser mi problema también. – Perry

+1

Gracias! mucho. (Me volví loco también). – majorl3oat

+0

¡Muchas gracias! Pasé medio día con este problema. – PSsam

0

tuve un problema similar, resuelto al forzar entero en el número de placa (usando PHP con los datos procedentes de MySQL db):

$body['aps'] = array(
     'alert' => array(
     'action-loc-key'=> utf8_encode($r['button_action']), 
     'body'   => utf8_encode($r['message']), 
     'launch-image' => '' 
     ), 
    'badge' => (int)$r['badge_number'], 
    'sound' => 'default' 
    ); 

Obs .: tomar un vistazo al comando utf8_encode para evitar un error json_encode al que me enfrenté anteriormente también.

Cuestiones relacionadas