Falta el derecho a notificaciones push

126

Tengo una aplicación para enviar cuando fue rechazada y recibí el mensaje

Falta el derecho a notificaciones push: parece que su aplicación se registra en el servicio de notificaciones push de Apple, pero los derechos de firma de la aplicación no incluyen el derecho "aps-environment". Si su aplicación utiliza el servicio de notificaciones push de Apple, asegúrese de que su ID de aplicación esté habilitada para notificaciones push en el portal de aprovisionamiento y vuelva a enviarla después de firmar su aplicación con un perfil de aprovisionamiento de distribución que incluya el derecho "aps-environment".

Revisé mi aprovisionamiento ad-hoc y allí encontré aps-environment y producción, sin embargo, cuando abro mi aprovisionamiento de distribución, no encuentro tal.

¿Es esta la causa de este mensaje de error y rechazo de Apple? ¿Cómo puedo solucionarlo?

Mirageservo
fuente

Respuestas:

80

Sí, esa es la causa del rechazo de la App Store. Si su perfil de aprovisionamiento ad-hoc tiene la clave de entorno aps, significa que su aplicación está configurada correctamente en el Portal de aprovisionamiento de Apple. Todo lo que necesita hacer es eliminar el perfil de distribución de la App Store en su máquina local, luego volver a descargar e instalar el perfil de distribución desde el Portal de aprovisionamiento. Este nuevo debe contener la clave aps-environment.

tom
fuente
Solo para despejar un poco más de niebla, esto indica que el "perfil de distribución DEBE tener el entorno aps, etc.", y que cuando abro el aprovisionamiento en un editor de texto, debería encontrarlo allí ...
mirageservo
¿Necesito generar un nuevo certificado SSL, especialmente cuando he cambiado algo de mi perfil de distribución?
mirageservo
2
No, no es necesario un nuevo certificado de desarrollador. Cuando habilitó la distribución para notificaciones push (lo que debe haber hecho en algún momento porque su perfil ad hoc tiene la clave de entorno aps), el Portal de aprovisionamiento de iTunes genera un nuevo perfil de distribución de la tienda de aplicaciones que contiene la clave de entorno aps. Probablemente no hayas descargado e instalado la última versión.
tom
Una cosa más antes de que esta pregunta llegue a la galaxia, ¿necesito volver a compilar (volver a archivar) la ipa, ya que habría un cambio en la configuración de compilación del proyecto o puedo distribuir directamente la aplicación sin molestarme en una recompilación?
mirageservo
Necesita volver a archivar. El perfil de aprovisionamiento asociado con la aplicación se incrusta en el .ipa.
Tom
43

Primera ID de aplicación

asegúrese de que su notificación de inserción de ID esté habilitada en el lado de producción

como aparece en la imagen

ingrese la descripción de la imagen aquí

Segundo certificado

desde la sección de producción, cree dos certificados con su ID (notificación push habilitada)

App Store y certificado Ad Hoc

Certificado SSL (Sandbox) del servicio de notificaciones push de Apple

ingrese la descripción de la imagen aquí

Terceros perfiles de aprovisionamiento

Desde la sección Distribución, cree el perfil de la tienda de aplicaciones con su ID

Finalmente

mientras carga su contenedor, debe verificar qué perfil de aprovisionamiento utilizó y tener muchos derechos

ingrese la descripción de la imagen aquí

esto todos los casos causan este problema espero que esto sea útil para usted

Mina Fawzy
fuente
1
Esto es lo que me faltaba. Tuve que crear un nuevo perfil de aprovisionamiento en el sitio de desarrolladores de Apple usando el ID de la aplicación con notificaciones push. Con el nuevo perfil de aprovisionamiento, finalmente se agregó el derecho aps-environment a mi aplicación. ¡Gracias!
M. Luisa Carrión
38

En XCode 8, debe habilitar la inserción en la pestaña Capacidades en su objetivo, además de habilitar todo en las disposiciones y certificados: Xcode 8 "falta el derecho del entorno aps en la firma de la aplicación" al enviar

Mi publicación de blog sobre esto aquí .

Vaiden
fuente
8
Esta es una Apple tan clásica. Dos horas después de enviar una compilación, envían un mensaje de error sobre un problema que resolví desde hace mucho tiempo (habilitando el Servicio de aplicación de notificaciones push en el Portal de desarrollo) y se explica con un enlace a un 404. Luego resulta que lo real El problema es que no migraron mi configuración al actualizar a una nueva versión de su software (en el que estoy bloqueado). Ugh
Rembrandt Q. Einstein
3
La misma historia aquí. Casi descartamos el mensaje de error como un error de Apple.
Vaiden
23

Recibí este mensaje por una razón diferente: envié una aplicación a través de Xcode sin crear primero un perfil de distribución de la tienda de aplicaciones específicamente para la aplicación. Creo que Xcode usa automáticamente un perfil comodín de la App Store si tiene uno instalado. Pero una aplicación usa Notificaciones Push requiere su propio perfil.

La solución es crear un nuevo perfil de distribución de App Store para la aplicación. Luego, descárguelo, arrástrelo a Xcode y modifique la configuración de compilación de su proyecto> Firma de código> Liberar para usar el nuevo perfil.

Simon Woodside
fuente
11

Siguiendo con la respuesta dada por @Vaiden, en Xcode 8 puede resolver este problema seleccionando el objetivo y haciendo clic en "Solucionar problema". Por supuesto, aún necesitará configurar notificaciones push en el portal de desarrolladores de Apple (puede simplificar un poco el proceso utilizando la nueva opción "Administrar automáticamente la firma", que le ahorra la molestia de descargar los perfiles de aprovisionamiento).

Opcion arreglarme

Ian
fuente
8

Para aquellos que se encuentren con este problema y que realmente estén usando Notificaciones Push en sus aplicaciones:

Nuestros certificados push estaban a punto de caducar recientemente, por lo que creamos nuevos certificados push de desarrollo / producción de la forma estándar descrita por Apple (no voy a entrar en detalles sobre esto aquí, hay mucha información en toda la web al actualizar sus certificados de empuje para otro año de uso).

Sin embargo, después de hacerlo, apareció el problema en esta pregunta. No importa lo que hicimos, recibimos este correo electrónico de Apple después de enviar nuestra aplicación. Cuando verificamos la configuración de nuestro Perfil de aprovisionamiento de distribución en el Centro de miembros de Apple, todo se veía bien (Push estaba habilitado para nuestra ID de aplicación para prod / dev, y nuestro perfil de aprovisionamiento de distribución todavía estaba conectado a esta ID de aplicación, literalmente acabamos de crear nuevos certificados de empuje para otro año, como es la práctica estándar).

Finalmente, esto es lo que terminó resolviéndome:

  1. Cree un nuevo perfil de aprovisionamiento de distribución que apunte a su ID de aplicación (deje intacto el actual)
  2. En Xcode, actualice sus perfiles de aprovisionamiento a través de Configuración> Cuentas> Seleccione su cuenta> Detalles> Haga clic en el icono de actualización
  3. Cree manualmente un archivo plist de derechos para su aplicación:
    • Menú Archivo> Nuevo archivo ...
    • Seleccione iOS> Recurso> Lista de propiedades
    • Nombre el nuevo archivo "foo.entitlements" (normalmente, "foo" es el nombre de destino)
    • Haga clic en (+) junto a "Archivo de derechos" para agregar un elemento de nivel superior (el editor de la lista de propiedades usará el esquema correcto debido a la extensión del archivo)
  4. Asegúrese de que este archivo de derechos se esté utilizando en la Configuración de compilación de su objetivo (Objetivo> Configuración de compilación> Buscar "Derechos", en CODE_SIGN_ENTITLEMENTS establezca la ruta al archivo de Derechos que acaba de crear)
  5. Asegúrese de que el perfil de aprovisionamiento / identidad de firma de código en su Target esté configurado correctamente para su perfil de aprovisionamiento de distribución apropiado / identidad de firma (esto debería ser obvio)
  6. No estoy 100% seguro de si esto lo afectó (no debería, ya que la configuración de Target anula la configuración del proyecto, pero lo hice de todos modos), asegúrese de que el perfil de aprovisionamiento / identidad de firma de su Proyecto coincida con el de su Target
  7. En el archivo de derechos que creó, haga clic derecho en el archivo vacío y seleccione "Mostrar claves / valores sin procesar"
  8. Agregue una nueva entrada al archivo de derechos denominado "aps-environment" y establezca su valor en "producción"
  9. Una nota clave, si anteriormente estaba usando el derecho de keychain-access-groups, también querrá agregar esa clave aquí porque, por alguna razón, se me borró al hacerlo manualmente. Asegúrese de que el valor sea el mismo que el utilizado en las compilaciones anteriores (puede encontrar el valor encontrando una compilación anterior en Organizer, intentando enviarlo a la tienda de aplicaciones, seleccione su equipo, luego, antes de enviar la aplicación, toque la flecha al lado de Cadena "(X) Derechos" para expandir los derechos y ver el valor de los derechos del grupo de acceso de llavero.
  10. Archive su aplicación e intente enviarla hasta llegar al botón "Enviar" final. Debería ver que esta aplicación ahora se creó con el nuevo perfil de aprovisionamiento que creó en el centro de miembros. Cancelar fuera de esto ahora.
  11. Vuelva al centro de miembros de Apple y elimine el nuevo perfil de aprovisionamiento que creó en el paso 1.
  12. De vuelta en Xcode, actualice su lista de perfiles de aprovisionamiento nuevamente repitiendo el paso 2.
  13. Ahora archiva tu aplicación nuevamente, y deberías ver que la aplicación fue compilada con el antiguo perfil de aprovisionamiento de Distribución que querías usar, y tiene correctamente el derecho de entorno aps. Envía y listo.

Sé que esto no es tan detallado como debería ser, ya que debería tener capturas de pantalla, intentaré actualizarlo con capturas de pantalla cuando pueda, pero por el momento estoy en una crisis de tiempo en este momento y quería obtener el truco de lo que hice allá afuera También es muy probable que algunos o la mayoría de los pasos que he descrito no sean necesarios, los estoy poniendo aquí porque los hice y pueden haber llevado a la solución final.

Adam Eisfeld
fuente
Gracias. El # 8 para mí estaba configurado para el desarrollo, que podría ser nuestro problema.
ingage
Muchas gracias, desperdicié un día entero en este shittery, el paso # 4 fue el problema, por alguna razón sin especificar CODE_SIGN_ENTITLEMENTS, los derechos se ignoraron solo en la carga de la tienda de aplicaciones.
Mark Kazakov
5

compruebe que el ID de su aplicación esté habilitado para Push o no en developer.apple.com en el portal de aprovisionamiento de iOS. Si no está habilitado, configure su certificado SSL Push para el ID de su aplicación. en su Xcode Liabrary

P de Vishal
fuente
4

También me enfrenté a este problema, incluso cuando no estaba usando notificaciones push en mi aplicación. Crear nuevo perfil de aprovisionamiento tampoco funcionó para mí. Lo que hice fue: -

1.Cree un nuevo certificado nuevo solo para Ad hoc y App Store.

2. Luego haga el perfil de distribución con este certificado e integre el perfil con Xcode.

Luego, la compilación recién enviada con este perfil aprobado sin ninguna advertencia.

Rosa del desierto
fuente
2
Intenté esto, no ayudó. sigo recibiendo las notificaciones push faltantes ... ¡no uso notificaciones push!
Adam
2

En mi caso, incluso creé un myapp.profile y lo configuré en xcode manualmente, y cuando elegí "mostrar en el buscador" y ubiqué el embedded.mobileprovision y lo verifiqué para asegurarme de que aps-environment esté allí en el archivo, el error fue aún allí.

Luego fui al centro de desarrolladores y descubrí que el estado de XC: myapp.profile no es válido. Lo actualicé e instalé el XC: myapp.profile y funcionó bien.

Creo que xcode está tratando de administrar el perfil y debe verificar el perfil de aprovisionamiento cuando envíe su binario a la tienda, y asegurarse de que sea el correcto. Y de acuerdo con otras respuestas, puede ser causado por varias razones, por lo que puede ser realmente molesto.

ACTUALIZAR:

Una vez que haya firmado con el perfil descargado y haya confirmado que aps-environmentestaba allí cuando intenta enviarlo App Store, debería poder cambiar el perfil y la entidad de firma de código a automático y iOS Developer. Espero que se pueda mejorar en Xcode 7.

superarts.org
fuente
He verificado todos los perfiles y también XC: el perfil se actualiza y no incluye ninguna clave de entorno asp allí, pero aún tengo el mismo problema una y otra vez. Cualquier ayuda será apreciada. Y sí, no necesito ninguna notificación push implementada en la aplicación
iOSDev
¿Podría asegurarse de verificar el contenido binario del perfil de aprovisionamiento y ver si la cadena "aps-environment" está dentro o no, por favor? Si está dentro, necesita encontrar alguna forma de deshacerse de él, de lo contrario, debe asegurarse de que ese perfil sea el que está firmando con su aplicación. De cualquier manera tiene que haber un problema.
superarts.org
1
Lo he comprobado dos veces e intento averiguar más, pero no tuve suerte. No hay una cadena como esa, pero después de 2 días de búsqueda e intentos, me conformé con una cosa: este problema es con Xcode 7 beta, no con mi código :) La misma compilación a través de Xcode 6.4 funciona perfectamente y no hay correo electrónico de Apple que informe que problema por lo que el problema es con Xcode 7 beta 4 no con código o perfil.
El iOSDev
2

Esto fue lo que me arregló. (Ya había intentado activar / desactivar las capacidades, recrear el perfil de aprovisionamiento, etc.).

En la pestaña Configuración de compilación , en Derechos de firma de código , mi archivo .entitlements no era un enlace para todas las secciones. Una vez que lo agregué a la sección Cualquier SDK, se resolvió el error.

ingrese la descripción de la imagen aquí

mogile_oli
fuente
2

Para resolver esto para una aplicación expo 'expulsada', fui a la pestaña de capacidades, habilité push, luego la desactivé nuevamente. Esto eliminó la configuración de 'derechos' de APNS del archivo .entitlements.

Chris
fuente
probé esto en mi proyecto "expulsado", pero aún recibo estas notificaciones
webdevbyjoss
1

Tuve el mismo problema y mi solución fue agregar el derecho de notificación push de Target -> Capabilities.

Shalom Dahan
fuente
0

Esto me sucedió de repente porque el perfil de distribución de mi aplicación había expirado. Xcode comenzó a usar el perfil comodín, que no tenía habilitado el derecho de notificación push. No recibí ninguna advertencia. La solución fue fácil; Solo tenía que generar otro perfil de distribución para mi aplicación en el Centro de miembros de desarrolladores de Apple, descargarlo y hacer doble clic para instalarlo en Xcode.

ahmacleod
fuente
0

Hay algunas sugerencias realmente buenas aquí.

En referencia a la última captura de pantalla que Mina proporcionó, después de archivar inicialmente mi aplicación, el perfil de aprovisionamiento mencionado durante la carga contenía un comodín (XC. *). Esto está mal.

Tomó un esfuerzo considerable para resolver esto. Tuve que realizar una combinación de las sugerencias que me dieron Simon Woodside y Mina Fawzy.

Si tiene certificados existentes y perfiles de aprovisionamiento relacionados con su proyecto, ahora sería un buen momento para eliminarlos localmente y revocarlos de forma remota. Date un nuevo comienzo.

La sugerencia detallada de Mina Fawzy es excelente. Realizar la sugerencia de Mina, si se realiza correctamente, debería encargarse de usted en línea.

Ingrese la sugerencia de Simon. Dos cosas que necesitaba verificar dentro de mi proyecto. Usando XCode, vaya aquí:

PROYECTO -> CONFIGURAR CONFIGURACIÓN -> FIRMA DE CÓDIGO

Revise la identidad de firma de código y el perfil de aprovisionamiento propiedades de . Asegúrese de establecer esas dos propiedades en la del nombre de su proyecto. No permita que XCode seleccione automáticamente para usted, y no use alguna identidad de firma de código genérico (por ejemplo, Iphone Developer).

Asegúrese de que realmente puede instalar la aplicación en sus dispositivos antes de decidir archivar.

Entrenador Roebuck
fuente
0

El mayor problema que tengo después de activar el Push Notificationde Capabilitiesy rehacer todos los certificados es que el nombre de destino y el nombre de la carpeta donde se almacena el proyecto se compone de 2 cadenas, separados por un espacio. Después de eliminar el espacio, todo funcionó bien.

Constantin Saulenco
fuente
1
Mi aplicación no está utilizando notificaciones automáticas, pero aún así recibo esta advertencia de Apple. Por favor sugiera
Chandni
0

Tuve este problema porque mi archivo de derechos tenía un formato incorrecto debido a la edición manual previa. Eliminé la sintaxis de entrada de titularidad con formato incorrecto y luego pude hacer clic en "arreglar" en la pestaña de capacidades y Xcode agregó la titularidad a mi archivo.

Aquí hay un ejemplo de un archivo de derechos con el formato correcto (" Runner.entitlements"):

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>
Jonas357
fuente
0

IDEA DE ARREGLO Hola chicos, así que hice una aplicación y no utilicé ninguna función de notificación de inserción, pero aún recibí un correo electrónico. Después de verificar los certificados, los identificadores y los perfiles del identificador de paquete que usé para crear mi aplicación en Apple Store Connect en el portal de desarrolladores de Apple, me di cuenta de que las notificaciones automáticas estaban activadas.

Lo que tienes que hacer es:

vaya al sitio de inicio de sesión de desarrollador de Apple donde puede administrar sus certificados y 2. seleccione la pestaña "Certificados, ID y perfiles" en el lado derecho 3. ahora seleccione "Identificadores" 4. y la identificación del paquete de la lista a la derecha 5. ahora desplácese hacia abajo hasta que vea la notificación push 6. apáguelo 7. archive su compilación y vuelva a cargarla en Apple Store Connect

¡Espero eso ayude!

Qooplite
fuente