notification notificaciones direct clave autenticación apple apns ios push-notification apple-push-notifications

direct - notificaciones push ios



iPhone iOS notificaciones push apns en producción no enviando (4)

He estado trabajando en esto por un tiempo ahora. Sé que hay un montón de artículos por ahí, y he aprendido mucho sobre todo eso.

He creado mis SSL de desarrollo y producción de la misma manera. El desarrollo se conecta a ssl: //gateway.sandbox.push.apple.com: 2195 Production se conecta a ssl: //gateway.push.apple.com: 2195 Las conexiones parecen funcionar bien.

En cuanto a la aplicación. Desarrollo: cuando lo ejecuto directamente en mi dispositivo desde xCode, ejecuta la versión de desarrollo. La aplicación registra con éxito el token de desarrollo en la base de datos. Luego ejecuto un servicio para enviar una notificación de inserción, y se entrega correctamente. El msg se entrega con éxito.

Ad-hoc: cuando construyo un archivo y lo exporto para la distribución Ad-hoc, compruebo el contenido del paquete codesign -dvvvv --entitlements - Elepago.app y veo que el aps-environment está configurado correctamente en producción. Lo empaqueté y lo cargué en mi dispositivo a través de iTunes. Cuando se inicia la aplicación, veo el nuevo token de producción registrado en la base de datos. Por lo tanto, el entorno debe estar configurado correctamente. Cuando envío la notificación de inserción a la clave de producción (idéntica a la del desarrollo, simplemente cambiando la clave SSL .pem y el servidor), dice que se entregó correctamente. Sin embargo, nunca llega al dispositivo.

Este problema me está volviendo loco. Acabo de revisar y limpiar mi certificado de distribución y reconstruirlo utilizando un CSR completamente nuevo. También actualicé todos los perfiles de provisión para usar ese nuevo certificado. [Cualquier idea sobre cómo estos certificados se relacionan con la aplicación, excepto para el aspecto de aps-environment que ya controlé].

Cualquier idea sería muy apreciada.


  • Cualquier perfil de distribución interno proporciona un mismo tokenID, sin embargo, este tokenID varía en diferentes dispositivos.
  • Otro problema solo podría ser solo con ProductionURL.
  • También he notado que la recepción de notificaciones push se retrasa a veces, principalmente cuando se usa con URL de producción.

Espero que esto ayude.


Mi problema es el mismo cuando desarrollé Java pero lo resolví por producción = verdadero es para producción y producción = falso para desarrollo.

carga útil (carga útil, almacén de claves, contraseña, producción, dispositivos)

Espero que esto ayude.


Así que después de horas y horas de dolores de cabeza, terminé reconstruyendo el archivo SSL .pem y funcionó.

Esto es lo que hice:

  • borró mi certificado de distribución y creó uno nuevo
  • asociados todos los perfiles de aprovisionamiento al nuevo certificado
  • cargar nuevos perfiles de aprovisionamiento en xCode
  • reconstruí mi protocolo handshake SSL .pem siguiendo las instrucciones en los increíbles tutoriales de Raywenderlich

Estas son las mismas instrucciones que había seguido originalmente para el desarrollo y la producción, pero tal vez / aparentemente arruiné algo. ¡Luego probé en mi versión ad-hoc y funcionó!

Además, vale la pena señalar que al usar la clave .pem incorrecta, no recibía ningún comentario de error de APNS. Utilizo el archivo simplepush.php encontrado en el enlace de arriba como base para enviar el PN.


El token del dispositivo para Desarrollo y Producción no es lo mismo.

Cuando esté probando la producción, use UIAlertView para ver su token de Producción. Haz algo como lo siguiente:

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; NSString *deviceID = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; deviceID = [deviceID stringByReplacingOccurrencesOfString:@" " withString:@""]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Device Token", nil) message:deviceID delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil]; [alert show]; }

Use este token para enviar notificaciones de producción.