2011-04-19 12 views
34

Recientemente mi aplicación fue rechazada durante la carga. El equipo de Apple dice que mi aplicación está "faltando Derechos Push Notification"Aplicación rechazada por "Falta el derecho de notificación de inserción"

Esta es la información que han proporcionado:

Missing El derecho de notificación Push - Sus registros de aplicaciones con el servicio de notificación push de Apple, pero la aplicación los derechos de la firma no incluyen el derecho requerido de "aps-environment". Asegúrese de haber habilitado Push Notification Services para esta aplicación, y de que haya descargado un perfil de aprovisionamiento de distribución que incluya el derecho de "aps-environment".

Las versiones anteriores de mi aplicación solían tener notificaciones automáticas, y mi aplicación binaria nunca fue rechazada debido a eso. ¿Qué debería hacer aquí?

Respuesta

17

Abra su perfil de aprovisionamiento en cualquier editor de texto y busque "entorno".

Usted debe encontrar: aps-environment

Si no ve aps-environment en su perfil de suministro, no es un problema en su certificado de aprovisionamiento de Apple.

Si creó un certificado sin notificaciones push y luego agregó el servicio de notificación push, Apple NO actualiza su perfil de aprovisionamiento.

Necesita crear un NUEVO perfil de aprovisionamiento. Firme el binario con este nuevo Perfil de Aprovisionamiento y estará listo.

+1

+1 por respuesta agradable. –

+1

Esta respuesta me ayudó mucho – lixiaoyu

14

He vuelto a crear mi perfil de aprovisionamiento de Distribución y compilo mi aplicación con él. Este cambio solucionó el problema de la pérdida de los derechos de notificación de inserción.

3

Recibí este mismo mensaje de error y la recreación de mi perfil de aprovisionamiento no lo eliminó.

En su lugar encontré que mi aplicación contenía algunos símbolos APNS relacionados (en una biblioteca) que no estaban siendo utilizados. Al parecer, provocaron que un analizador estático marcara la aplicación como si se tratara de notificaciones push (no es así). # ifdef -ing los símbolos permitieron que mi aplicación sea aceptada sin el derecho de aps-environment.

+1

Gracias por esto. Después de todo un día de desconfiar de esto, encontré tu respuesta aquí y comenté '[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];' en appDelegate, que parece haberlo resuelto. – Robert

8

Tuve el mismo problema y lo solucioné al recrear el perfil de aprovisionamiento. De "Provisioning and Development" en la Guía Local y Push Notification:

El administrador del equipo o el Agente del equipo deben crear al lado del archivo de suministro (desarrollo o la distribución) que se utiliza en el lado del servidor de desarrollo remoto a la notificación. El perfil de aprovisionamiento es una colección de activos que asocia a los desarrolladores de una aplicación y sus dispositivos con un equipo de desarrollo autorizado y permite que esos dispositivos se utilicen para las pruebas. El perfil contiene certificados, identificadores de dispositivos, la identificación del paquete de la aplicación y todos los derechos, incluidos. Todos los miembros del equipo deben instalar el perfil de provisión en los dispositivos en los que se ejecutarán y probar el código de la aplicación.

+1

También funciona para mí, habilité APNS para mi AppID después de haber creado el perfil de aprovisionamiento de AppStore, por lo que parecía que los derechos APNS no estaban incluidos en el perfil, por lo tanto, debe recrearlo. – schmunk

0

Tengo el mismo problema. Lo he resuelto

Creo que este problema se produce cuando se agrega la función push-notificación a AppID y no se recrea el aprovisionamiento. Vamos a recibir una advertencia al agregar iCloud-función:

Todos los nuevos perfiles de datos que se crean para este ID de aplicación se habilitarán para iCloud. Si desea activar iCloud para cualquier perfil de aprovisionamiento existentes asociadas con este ID de aplicación, debe volver a generar manualmente ellos

Creo que cuando añadimos alguna función en AppID, debemos regenerar manualmente todos los aprovisionamientos que están relacionados con ese AppID.

Creo que sí

0

Pasos

  1. habilitar el servicio de notificaciones push (certificado SSL empuje Producción)

  2. Crear/Vuelva a crear Distribución de aprovisionamiento perfil y construir su aplicación con Distribución actualizada Perfil de aprovisionamiento.

Los siguientes recursos pueden ayudarle a

1

poco me encontré con este problema después de añadir una extensión de hoy a una aplicación con Servicios de inserción habilitados. Finalmente, nos dimos cuenta de que el perfil de Mobile Provisioning generado por Xcode para Today Extension no tenía habilitados los Servicios de Notificaciones Push. Una vez que habilité Push Services para Today Extension, la advertencia de Apple desapareció.

11

Si está enviando un proyecto de Cordova/Phonegap y NO está utilizando notificaciones push, debe inspeccionar Classes/AppDelegate.m para conocer los dos métodos a continuación. Observado en Cordova 3.7.0, no estoy seguro sobre otras versiones.

Asegúrate de no estar usando notificaciones remotas de ninguna otra forma (revisa cuidadosamente tus complementos también). A continuación, elimine o comente el siguiente bloque:

- (void) application:(UIApplication*)application 
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 
{ 
    // re-post (broadcast) 
    NSString* token = [[[[deviceToken description] 
     stringByReplacingOccurrencesOfString:@"<" withString:@""] 
     stringByReplacingOccurrencesOfString:@">" withString:@""] 
     stringByReplacingOccurrencesOfString:@" " withString:@""]; 

    [[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotification object:token]; 
} 

- (void) application:(UIApplication*)application 
    didFailToRegisterForRemoteNotificationsWithError:(NSError*)error 
{ 
    // re-post (broadcast) 
    [[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotificationError object:error]; 
} 

Hope esto le ahorra un par de horas ;-)

+3

Esto todavía es necesario para Cordova 4.3.0, sin embargo, agregaron una macro DISABLE_PUSH_NOTIFICATIONS para deshabilitar el código en un solo lugar. Ahora simplemente agrega '#define DISABLE_PUSH_NOTIFICATIONS' en el encabezado de' AppDelegate.m' y listo. – jlapoutre

+0

También para cordova 5.x esto es necesario. '#define DISABLE_PUSH_NOTIFICATIONS' lo resolvió. Parece que depende de los complementos que instaló. en mi caso, un complemento IAP produce este error. –

4

mi caso: He implementado notificaciones push para una actualización de mi aplicación appstore. Como los perfiles de aprovisionamiento anteriores a la impulsión de notificación de inserción dejan de ser válidos, he creado un nuevo perfil de aprovisionamiento de distribución de la tienda de aplicaciones y he creado la aplicación con un nuevo perfil y la he cargado en la tienda. Pero recibí un correo que decía "Falta el derecho de notificación de inserción".

Buscando: He encontrado que, al archivar, Xcode está utilizando un perfil de aprovisionamiento incorrecto (no válido).Así borrado el archivo de suministro de edad del centro de miembro y resolvió el problema

Screenshot while validating the archive

+0

En mi caso, Xcode está utilizando su propio perfil de aprovisionamiento predeterminado.¿Qué debo hacer para que Xcode use el perfil de aprovisionamiento de Mi aplicación –

+0

? ¿Intentó mencionar su perfil de provisión en Configuraciones de compilación-> Code Sigining? - Incluso después de solicitar el uso de su perfil prov, si Xcode usa el perfil predeterminado de prov, elimine el perfil prov predeterminado en el centro miembro – NaveenRaghuveer

3

También tuve este problema con una aplicación de Córdoba y después de hacer un poco de lectura parece que este es un problema común hoy en día.

¿POR QUÉ SUCEDIÓ?

Dado que menciona que su aplicación ya fue aprobada mediante notificaciones automáticas, lo más probable es que el perfil de provisión de su aplicación haya cambiado al enviarlo a la AppStore. Tal vez:

  1. reconstruyó su proyecto en Xcode, o
  2. movido a otro equipo y se olvidó de decirle a XCode cuál era el perfil correcto, o
  3. alguien sentado en su computadora y la ha cambiado, o

Este problema ocurre porque los permisos se obtienen a través del perfil de suministro. Si olvida vincular el perfil de aprovisionamiento de su aplicación a un AppID que tiene el derecho de 'Notificaciones Push' (tenga en cuenta que XCode lo hace automáticamente mediante el certificado de aprovisionamiento de desarrollador comodín por defecto), entonces es probable que reciba este mensaje hasta ordenarlo fuera de la autorización.

COMO eliminar la necesidad de notificaciones push EN CORDOBA Aplicaciones:

Me presento una aplicación de Córdoba cuando llegué a este mensaje, y al mismo tiempo la solución Publicado por @jlapoutre es suficiente para obtener su aplicación aprobada, desea continuar beneficiándose de las actualizaciones de Cordova así que lo mejor es aprovechar la compilación condicional (es decir, activar la directiva #ifndef DISABLE_PUSH_NOTIFICATIONS que le dice a XCode que compile su aplicación con este bit de código omitido).

La compilación condicional también se conoce como 'Macros de preprocesador' en XCode-speak. Esta es la forma en la que puede lograr esto gráficamente a través de la interfaz de usuario (nótese que esto de la manera en que su hecho XCode 6.1):

enter image description here

Espero que esto ayude a otras personas por ahí en una misma situación.

Cuestiones relacionadas