2012-01-05 16 views
11

Tengo una aplicación que se suponía que tenía notificaciones push habilitadas, pero por alguna razón no las tiene. He visto a otras personas descargar e instalar la aplicación, y ni siquiera les pide permiso para enviar notificaciones automáticas. Como era de esperar, esta aplicación no aparece en su Configuración> Notificaciones.¿Cómo puedo verificar si un perfil de aprovisionamiento de distribución de iOS tiene activadas las notificaciones push?

Sin embargo, en mi iPad, puedo recibir notificaciones automáticas desde esta aplicación, y aparece en mi Configuración> Notificaciones. He eliminado y reinstalado la aplicación para asegurarme de que tenía lo mismo que todos los demás (y no una versión de desarrollo), y todavía puedo recibir notificaciones.

Ahora, esta aplicación fue escrita para un cliente que me envió todos los perfiles de aprovisionamiento (dev, adhoc, distribución) y los archivos necesarios para poder enviar notificaciones push, por lo que no puedo estar seguro de que todo fue creado correctamente

Mi teoría en este momento es que:

  • el perfil adhoc que recibí fue "creado correctamente" (es decir, generado después de configurar los APN en la aplicación ID de la aplicación en el Portal de Aprovisionamiento)
  • la perfil de distribución que recibí se generó antes de configurar los APN para esta aplicación (y por lo tanto, no está "habilitado para inserción")
  • la razón por la que puedo recibir notificaciones push en mi dispositivo es porque durante desarrollo Instalé una versión adhoc, que me solicitó permisos para recibir notificaciones push, y aunque eliminé esta versión adhoc y descargué la versión de la tienda, , el dispositivo ha "cacheado" el hecho de que estoy dispuesto para recibir notificaciones y ya no me lo pide. Lo he comprobado con otras aplicaciones y, de hecho, después de eliminarlas y volver a instalarlas, no me volverán a solicitar permisos para recibir notificaciones automáticas.

Así que mis preguntas son:

  • ¿Este teoría tiene sentido?
  • Si lo hace, esto significa que tendré que pedirle al cliente que genere un nuevo perfil de aprovisionamiento de distribución. ¿Cómo puedo verificar que este perfil esté "habilitado para presionar"? (es decir, teniendo en cuenta que no puedo acaba de instalar una aplicación compilada con él)

Respuesta

22

Ok, que puede haber encontrado una forma de verificar si los perfiles tienen habilitada empuje.

Si abro el archivo .mobileprovision como un archivo de texto, hay un poco de XML allí (un plist aparentemente), que supongo para un perfil de distribución debe tener presente:

<key>aps-environment</key> 
<string>production</string> 

Y de hecho , el perfil adhoc tenía esto y el perfil de distribución no, así que ... Supongo que este era el problema.

Aún así, cualquier comentario sería de gran ayuda :)

+2

Y una manera fácil de ver la parte XML en el perfil de aprovisionamiento sería ejecutar el siguiente comando en Terminal.app 'security cms -D -i/path/to/AppStoreProfile.mobileprovision' Luego buscar ese mismo entorno-aps llave. – Tal

7

ligeramente diferente, pero sigue siendo útil: al cargar una aplicación de iTunes Connect, se puede comprobar si tiene notificaciones push (o cualquier otro derecho) activado.

Para hacer esto, vaya a Administre sus aplicaciones, seleccione la aplicación, luego vaya a "Ver detalles" para la versión que desea verificar.

A partir de ahí, vaya a la página "Detalles binarios" - hay un campo de Derechos que muestra cuáles son los derechos que tiene el binario. Si las Notificaciones automáticas están habilitadas, verá una línea "aps-environment: production" allí.

0

Asegúrese de que el perfil de suministro de distribución se genera después de crear el certificado aps. cambios de alto perfil pueden perder APS-ambiente

0

añadí lo siguiente para AppDelegate.m para que pudiera ver exactamente lo que los ajustes fueron habilitadas en depuración

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
    UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 
NSLog(@"Receiving Notification Types: %lu", (long)enabledTypes); //0=none 1=badge 2=sound 4=alert 8=NewsStandContantAvailability 

Tengo este desde una muy inclusivo y enlace útil: Apple Push Notification Service Tutorial - Part 1 fue extremadamente útil para mí.

Cuestiones relacionadas