2011-10-12 9 views

Respuesta

43

Como he publicado ayer como respuesta a la misma pregunta: (prev. answer)

tengo problemas similares. Después de hacer algunas pruebas llegué a las siguientes conclusiones:

  1. Si la aplicación (que se compiló con development provision profile) está instalado de tal dispositivo tiene development token y usted debe enviado empuja a tal dispositivo usando development certificate.

  2. Si la aplicación (que se compiló con distribution provision profile) está instalado de tal dispositivo tiene production token y usted debe enviado empuja a tal dispositivo usando production certificate.

Y, si su aplicación no se ha publicado, creo que APNS no aceptará production certificate, así que probablemente no será capaz de enviar empuje para sus aplicaciones ad-hoc.

¿Qué puedes hacer? Por ejemplo, envió la aplicación a los probadores que compiló con development certificate.

ACTUALIZADO: He aprendido esta pregunta una vez más y encontré algunos datos interesantes:

  1. Descarga tu Ad-hoc provision profile.
  2. Abra el perfil de provisión desde 1. con el editor de texto.
  3. Buscar líneas <key>aps-environment</key> <string>production</string>
  4. Comprobar el valor de la clave aps-environment. ¿Es igual a production?
  5. En caso afirmativo, entonces debe enviar a la notificación de inserción de aplicaciones ad-hoc con production certificate.

    Si el valor es development, debe enviarlo a la notificación de inserción de aplicaciones ad-hoc con development certificate.

  6. Ahora abra iOS Portal de aprovisionamiento ->App IDs. Seleccione su aplicación
  7. Compruebe si Production Push SSL Certificate está habilitado.

Si esto no le ayudó, intente actualizar su perfil de aprovisionamiento ad-hoc.

+0

Creo que u no es clara con lo que dije, que trabaja para el perfil de desarrollo, pero no para distribution.I adhoc también estoy usando 'aplicación pushmebaby' para generar notification.Thanks –

+0

Te entiendo claramente. Lea mi segundo punto: 2. Si su aplicación no está publicada en AppStore, no estoy seguro de que pueda usar el certificado de producción. – Nekto

+0

También probé con el certificado de desarrollo y el perfil de distribución adhoc, pero todavía no apareció nada. –

1

Las notificaciones automáticas son a veces un dolor de cabeza y se componen de muchos elementos.Si pierde algo en el camino, su PNS no funcionará y será muy difícil entender por qué. Como regla general, consulte la siguiente lista de comprobación:
- El certificado de inserción y la clave privada se generaron correctamente con la ID de aplicación correcta (la misma a la que se adjunta el perfil de aprovisionamiento).
- Tanto el certificado como la clave privada provienen del mismo certificado PNS descargado.
- Ambos archivos se concatenaron correctamente en un archivo .pem.
- Su aplicación maneja las notificaciones automáticas a medida que ingresan, mientras la aplicación está activa.

En cualquier caso, recomiendo seguir un buen tutorial, como este: http://mobiforge.com/developing/story/programming-apple-push-notification-services palabra por palabra. ¡Buena suerte!

+0

Gracias por el tutorial, he seguido todos los pasos. No necesito el archivo .pem ya que estoy usando la aplicación 'pushmebaby' que solo requiere certificados. –

0

Según tengo entendido, no puede enviar notificaciones a una compilación ad hoc con un certificado de desarrollo. Como puedes imaginar, este escenario está bien HASTA que abras la aplicación. Una vez que se libera la aplicación, el envío de notificaciones a la compilación ad hoc que contiene el certificado de producción también se enviará a los titulares de la aplicación. La forma en que solucioné esto fue:

  1. Crea una nueva aplicación en Apple que tenga la misma línea de base que la aplicación en itunes.
  2. Crea una nueva clave de producción y certificado para esta aplicación "fantasma".
  3. Crea la nueva aplicación con la nueva clave de producción y prueba con esa compilación.

Ahora tendrá una aplicación que puede crear para probar específicamente las notificaciones. No es una solución elegante, pero funciona.

+0

No estoy seguro de por qué esto fue downvoted, la creación de un paquete por separado es un mecanismo legítimo para la prueba beta con plataformas como HockeyApp. – Leon

1

Me encontré con lo mismo y pasé bastante tiempo tratando de resolverlo. Genere un nuevo certificado de producción, creé un perfil de aprovisionamiento Ad-Hoc (para que pudiera probar con la notificación de inserción pasando por la producción) y nada funcionaba en absoluto.

Corregí el script push (del lado del servidor) en consecuencia (usando los nuevos archivos .pem generados y conectando a ssl: //gateway.push.apple.com: 2195). El script me decía que la notificación se había entregado pero mi dispositivo no la estaba recibiendo.

¡Resulta que el problema era realmente tonto! Aparentemente, los tokens del dispositivo cambian cuando se usa la aplicación con el nuevo certificado (ya sea a través de Ad-Hoc). Solo puedo especular el motivo de por qué cambiaron, pero todo lo que sé es que una vez que tomé el token correcto y utilicé mi script de prueba para enviar una notificación al dispositivo, ¡lo conseguí!

+0

+1. También tuve que usar ssl: //gateway.push.apple.com: 2195 (necesario para eliminar el sandbox) y tuve que usar el token del dispositivo para el certificado de producción. – Geek

0

Acabo de superar un problema muy similar y resultó ser algo que probablemente debería haber sido obvio, pero lo publicaré aquí en caso de que alguien más sea tan tonto como yo.

Estoy usando MoonAPNS y podría recibir notificaciones de desarrollo pero no de producción. Después de varios días de dar vueltas en círculos volví a esta línea:

PushNotification push = new PushNotification(true, p12file, p12password); 

Tras haber descartarse true parámetro, una depuración a través del código del servidor mostraron que este se ponía si se usa o no el servidor Sandbox - D' Oh! Lo cambié a false y todo estaba bien.

Moraleja de la historia: ¡no olvide señalar sus notificaciones en el servidor que no es Sandbox!

1

Además de la conjetura de necto ...

Y, si su aplicación no se ha publicado, creo que la APN no aceptará certificado de producción, por lo que probablemente no será capaz de enviar empuje hacia sus aplicaciones ad-hoc.

Mientras tanto, puedo confirmar que es posible recibir notificaciones push en aplicaciones ad-hoc, incluso si la aplicación aún no está publicada.

0

Tengo el mismo problema y después de muchos testículos finalmente tuve el problema.

Esto se debe a que el servidor apns de producción de apple ya no permite el archivo P12 que contiene los datos de la clave privada. Pero el servidor apns de desarrollo aceptará el archivo P12 que sea si contiene la clave privada.

Así que cuando exporta el archivo P12 de llavero, solo seleccione su archivo de certificado de producción sin la clave privada y recibirá las notificaciones en su aplicación adhoc (incluso si no está publicado).

1

Hay una lista de comprobación importante que se debe tener en cuenta al probar la pushnotification para el entorno de desarrollo. La mayoría de ellos ya se mencionaron anteriormente. Pero esto es una cosa QUE SOLUCIONÓ MI PROBLEMA y me gustaría compartirlo. Espero que esto ayude a alguien. Y eso es:

Tenga en cuenta la identificación del token del dispositivo, que es diferente para el desarrollo & & Entorno de producción.

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
     NSString *deviceTokenStr = [[[[deviceToken description] 
             stringByReplacingOccurrencesOfString: @"<" withString: @""] 
            stringByReplacingOccurrencesOfString: @">" withString: @""] 
            stringByReplacingOccurrencesOfString: @" " withString: @""]; 
     UIAlertView *alert= [[UIAlertView alloc]initWithTitle:deviceTokenStr message:Nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [alert show]; 
} 
Cuestiones relacionadas