Xcode 8 "falta el derecho aps-environment en la firma de la aplicación" al enviar

118

Tengo una aplicación a la que hemos enviado docenas de versiones en los últimos 6 meses y usamos APNS. Recibí el siguiente correo electrónico de Apple después de actualizar a Xcode 8

Estimado desarrollador,

Hemos descubierto uno o más problemas con su entrega reciente de APP_NAME. Su entrega se realizó correctamente, pero es posible que desee corregir los siguientes problemas en su próxima entrega:

Falta el derecho de notificación push: su aplicación incluye una API para el servicio de notificaciones push de Apple, pero el derecho aps-environment falta en la firma de la aplicación. Para resolver esto, asegúrese de que su ID de aplicación esté habilitado para notificaciones push en el portal de aprovisionamiento. Luego, firme su aplicación con un perfil de aprovisionamiento de distribución que incluya la autorización aps-environment. Esto creará la firma correcta y podrá volver a enviar su aplicación. Consulte "Aprovisionamiento y desarrollo" en la Guía de programación de notificaciones push y locales para obtener más información. Si su aplicación no utiliza el servicio de notificaciones push de Apple, no se requiere ninguna acción. Puede eliminar la API de envíos futuros para detener esta advertencia. Si usa un marco de terceros,

Una vez que haya corregido los problemas, puede usar Xcode o Application Loader para cargar un nuevo binario en iTunes Connect.

Saludos,

El equipo de la App Store

Lo extraño es que fui a developer.apple.com -> Certificados, identificadores y perfiles y mi AppId todavía tiene habilitadas las notificaciones automáticas. No estoy haciendo nada diferente de lo que he hecho nunca, así que tengo curiosidad si la actualización de Xcode 8 rompió algo. ¿Algunas ideas?

Por cierto: el enlace que pusieron para la Guía de programación de notificaciones push se rompió en el correo electrónico, por lo que no es una buena señal.

Unome
fuente

Respuestas:

156

Muy fácil en realidad. Por alguna razón, se desactivó en Xcode 8, pero vaya a Objetivos -> Capacidades y verifique que las Notificaciones push estén correctas en esa vista. Para mí tenía un "Fix Me", tuve que hacer clic, y listo.

Unome
fuente
4
Lo extraño de este problema no fue la solución, fue el hecho de que en Xcode 7 esto estaba habilitado y después de la actualización se deshabilitó.
Unome
2
También tuve que ir al archivo de derechos y cambiar el valor del entorno APS a 'producción' porque estaba configurado en 'desarrollo' de forma predeterminada cuando se creó.
Bek
61
Debe haber gente sin cerebro contratada recientemente en Apple ... ¿Por qué están perdiendo el tiempo de los desarrolladores al deshabilitar cosas de forma predeterminada y establecer implícitamente valores inapropiados sin ninguna advertencia sobre eso? Perdí un día creando perfiles, certificados, depuración y otras cosas molestas ..
Hristo Atanasov
3
¡Finalmente! Es ridículo, ha sido tan difícil hacerlo funcionar. He estado eliminando y recreando los certificados / perfiles durante casi 5 horas. Lo bueno es que puedo decir que entiendo completamente qué son estos certificados / perfiles / identificadores ahora :) Gracias por esta pista.
Kamil Rykowski
4
@bek tenga en cuenta que probablemente debería dejarlo como desarrollo. Se cambia a producción automáticamente al cargarlo en iTunes Connect.
Montdidier
84

También tengo el mismo problema, y ​​estoy seguro de que la notificación Push está desactivada de forma predeterminada en Xcode8. No me di cuenta. Ten cuidado con eso.

capacidad

Bruce Tsai
fuente
¿Puede decirme por qué no tengo la sección de notificaciones automáticas en mi cuenta?
Anuj
28

Hubo un cambio en Xcode 8, donde sus derechos ya no provienen de los identificadores de la aplicación, sino de las capacidades seleccionadas en el destino de su aplicación. Entonces, como dijo Unome (el OP), debe verificar que las notificaciones push estén activadas.

Para mí, no era un botón "Repararme", pero tenía dos archivos de derechos (uno para desarrollo y otro para distribución). Alternar la capacidad de notificaciones push agregaría la aps-environmentclave, con el valordevelopment , al archivo de derechos de desarrollo, pero no la agregaría al archivo de derechos de distribución. Copiar la misma clave en la distribución funcionó para deshacerse del correo electrónico de advertencia al cargarlo en iTunes Connect.

Para la mayoría de los proyectos, debería ser suficiente activar las notificaciones automáticas, o si ya está activado pero la clave no está en los derechos, intente activarlo y desactivarlo nuevamente.

Timgcarlson
fuente
Este es el barco en el que estoy, excepto que no importa lo que especifique en mi .entitlementsarchivo para la configuración / esquema actual, siempre se usa productioncomo archivo aps-environment.
Albert Bori
alternar la notificación de empuje en las capacidades bloquea mi Xcode 8 !!
djay
2
@AlbertBori Extraño, solo pude hacer que mostrara el desarrollo, lo cual estaba bien porque cuando se archivó, apareció como production.
timgcarlson
6
@meteors Debería estar bien si el valor es development. Se cambiará en la ipa cuando se archive el proyecto.
timgcarlson
2
@timgcarlson En realidad, esto no sucede durante el archivo. Ocurre durante el envío o cuando se exporta. También hay información útil para verificar que se esté configurando correctamente aquí: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard
27

De las notas de la versión de Xcode :

Xcode 8 no copia automáticamente la autorización aps-environment de los perfiles de aprovisionamiento en el momento de la compilación. Este comportamiento es intencional. Para usar este derecho, habilite las notificaciones automáticas en el panel de Capacidades del editor del proyecto o agregue manualmente el derecho a su archivo de derechos. (28076333)

Este es un gran cambio ya que siempre fue bastante extraño que el derecho aps-environment no requiriera el plist, pero muchos otros sí lo hicieron.

Para aquellos de ustedes que no quieran presionar ciegamente "Arreglarme" y actualmente no tienen un archivo de derechos, es solo un archivo plist al que se hace referencia en la Configuración de compilación de su proyecto en "Derechos de firma de código".

Mattyohe
fuente
1
¡No pude encontrar esa cita en las notas vinculadas!
Iulian Onofrei
No sé quién votó a favor de mi comentario y qué estuvo mal, pero ahora también puedo encontrarlo.
Iulian Onofrei
13

Después de un día de lucha con Xcode 8, no pudimos entender por qué el aps-environmentdesarrollo NO se agregó a nuestras compilaciones de depuración. Faltaba en la sección de derechos en la aplicación creada para las pruebas de depuración ... a pesar de que HEMOS HABILITADO la nueva capacidad y existía el archivo de derechos. El problema es que el archivo de derechos debe configurarse para CUALQUIER SDK en la configuración de compilación de Xcode para derechos de depuración.

captura de pantalla

James L. Harris
fuente
No creo que haya ninguna diferencia entre establecer un valor para la Debugclave y establecerlo para el Debug> Any SDKuno, ya que este último se usa para anular el valor de un SDK en particular.
Iulian Onofrei
Esta es la solución para mí
Himanth
Después de luchar con esto toda la mañana, este era el problema que yo también tenía. Alternar capacidades, generar perfiles de aprovisionamiento, nada de eso funcionó. Esto hizo.
Dave S
esta sigue siendo una solución válida en algunos casos en Xcode 8.3.3
dan
Ojalá pudiera votar esto un millón de veces. He estado luchando durante una semana y esta fue la solución. El simple hecho de escribir la ruta del archivo en los derechos de firma de código en la parte superior no era suficiente, también tenía que hacerse en la parte "Cualquier SDK". Esta fue la clave para resolverlo para mí.
Robert Bentley
7

Recibí el mismo correo electrónico de Apple usando XCode 7.3.1. Lo que hice para solucionar el problema fue:

  1. En Capacidades> Active la notificación PUSH como se indica en la respuesta de @Bruce Tsai.
  2. En Build-Settings> Code Signing> Code Signing Identity, configure el certificado de desarrollador para depuración y el certificado de distribución para lanzamiento, como se muestra en la imagen:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Ruben
fuente
Hola, En Capacidades no
obtengo
@Anuj, agregué una captura de pantalla donde debería estar en su Xcode.
Ruben
5

Si está usando los frameworks de Firebase y no está usando notificaciones push, hay dos soluciones: 1. simplemente aguante el mensaje de "problema" que se envía a todo su equipo cada vez que carga un binario. La aplicación seguirá siendo aceptada como un envío siempre y cuando no esté utilizando notificaciones, puede ignorar la advertencia. o 2. haga esto: https://stackoverflow.com/a/46802075/7529450 . Esto eliminará la molesta notificación por correo electrónico y también será aceptado como envío.

Aaron Halvorsen
fuente
4

Gestionar automáticamente la firma estaba desactivado para mí

Gestionar automáticamente la firma estaba desactivado para mí, lo verifiqué y funcionó bien para mí.

Shemeer M Ali
fuente
3

Se habilitó el uso de notificaciones push de Xcode 9.

Intenté deshabilitar / volver a habilitar las funciones de notificación push . (no funcionó)

Intenté deshabilitar / volver a habilitar Gestionar automáticamente la firma . (no funcionó)

Resulta que tuve que eliminar y volver a agregar mis perfiles de aprovisionamiento. ( vea aquí cómo hacerlo ) Es posible que deba deshabilitar / volver a habilitar Gestionar automáticamente la firma después de las salas.

Aldracor
fuente
2

Para mí, el problema era porque había dos archivos de derechos: Entitlements-Debug.plisty Entitlements-Release.plist. Y solo uno de ellos (Debug) tiene configuraciones necesarias.

Cambiar varios valores de Configuración de compilación> Firma> Derechos de firma de código a uno solo MyAppName/MyAppName.entitlementsy luego volver a habilitar Capacidades> Notificaciones push conmutador de funcionó para mí.

Espero eso ayude.

Alexander Zinchuk
fuente
0

Una opción más que funcionó: copiar y pegar la fuente de AppName/Entitlements-Debug.plistinto AppName/Entitlements-Release.plist.

Alexander Zinchuk
fuente