5

Como dice el título, tengo una aplicación con APNS incorporado. Funciona perfectamente en Sandbox-mode. Pero en el modo de producción, falla miserablemente.iPhone push-notification funciona en sandbox pero no en modo de producción

Parece que tengo los certificados correctos en el servidor, porque no recibo un error del servicio APNS. Todo parece funcionar bien. Estoy usando ApnsPHP por Aldo Armiento. Tiene una función incorporada para escupir los resultados del servidor APNS. Cuando trato de usar el Sandbox con la aplicación de la tienda, obtengo, como era de esperar, un error de token no válido (ya que los tokens de sandbox y producción son diferentes). Cuando uso el certificado de producción con la aplicación de la tienda, no obtengo un error. Nada, nada, nada, parece que entregó la notificación. Por desgracia, no llega a mi teléfono.

Aparentemente, los certificados deben estar bien. Se conecta al servidor, envía la notificación, todas las pases sin errores (primero tuve certificados erróneos, así que sé lo que sucede si no están bien :)

Cualquier idea sobre cómo encontrar el lugar donde se oculta el insecto ?

[Editar] esto es lo que vuelva de la APN-Service:

Tue, 03 Jan 2012 03:13:55 +0100 ApnsPHP[13049]: INFO: Trying ssl://gateway.push.apple.com:2195... 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Connected to ssl://gateway.push.apple.com:2195. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Sending messages queue, run #1: 1 message(s) left in queue. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: STATUS: Sending message ID 1 [custom identifier: Message-Badge-000] (1/3): 107 bytes. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Disconnected. 

Respuesta

10

Aquí es tres casos se puede comprobar en su extremo: -

  1. Asegúrese de que ha utilizado el certificado de producción correcto en su lado del servidor. ya que necesitamos crear dos certificados diferentes para producción y sandbox. asegúrese de estar usando el certificado correcto en el servidor.

  2. segundo, puede verificar que ha utilizado la puerta de enlace correcta y el número de puerto en el servidor. Dado que la puerta de enlace para producción y sandbox son diferentes. Gateway utilizado para la producción es: gateway.push.apple.com. y también está utilizando la contraseña correcta en el servidor para su certificado que ha utilizado en su servidor.

  3. En tercer lugar, puede verificar si la notificación en su dispositivo está habilitada o no. También debe habilitarlo en su iPhone. Asegúrate de que esté en tu dispositivo.

Avísame si te funciona.

+0

Gracias, pero he comprobado todo eso. Todo está configurado de la manera que se supone que debe ser. Y como se mencionó, no recibo ningún error del servicio de inserción, aparece cuando los mensajes pasaron ... muy extraño. – Swissdude

+0

¿ha intentado volver a crear el certificado de producción y ponerlo en su servidor? –

+1

Lástima de mí :) era el certificado. Me desarrollo para otra compañía y el desarrollador original se fue - su certificado de alguna manera todavía parece estar activo (lo reemplacé con el mío, sin embargo). Entonces el certificado era válido y era válido para la aplicación. Pero el binario fue compilado con mi clave privada, que debe haber confundido. ¡Gracias por su ayuda! – Swissdude

1

Véase la respuesta en https://stackoverflow.com/a/11623162/496222

En resumen: asegúrese de que ambos certificados SSL están en un archivo PEM separada. Tener un único archivo PEM con el certificado de entorno limitado y de producción hará que cualquiera de los entornos falle.

0

consultar también si su notificación de inserción ID de aplicación habilitada

7

Para mí, lucho para este día. Utilizando la clave y el certificado de producción correctos, y también la puerta de enlace correcta para enviar el mensaje a mi iPhone en desarrollo, se envió con éxito en el modo de espacio aislado, pero falló con el modo de producción. Es porque también hay dos tipos de token de dispositivo, el token de dispositivo de prueba de iPhone es token de sandbox, no se puede usar en el modo de producción. Es mejor usar el token de otro dispositivo para probar los APN de producción.

La explicación detallada es here

El problema más común es un token de dispositivo no válido.Si el token proviene del entorno de la caja de arena , como cuando está probando una construcción de desarrollo en una casa, no puede enviarlo al servicio push de producción. Cada entorno de inserción emitirá un token diferente para el mismo dispositivo o computadora . Si envía un token de dispositivo al entorno incorrecto, el servicio push lo verá como un token no válido y descartará la notificación.

+0

Este hombre lo entendió bien ... Gracias por compartir esta información. – bottus

0

Esto resolvió mi problema, asegúrese de establecer el valor correcto para kGGLInstanceIDAPNSServerTypeSandboxOption. Para el modo de desarrollo establecido en SÍ y para el modo de producción 'NO'.

+0

Creo que esto parece ser para Google Cloud Messaging? https://developers.google.com/cloud-messaging/ios/client – Nick

Cuestiones relacionadas