Xcode 8 “la propiedad aps-environment no se encuentra en la firma de la aplicación” en el envío

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 fue exitosa, pero es posible que desee corregir los siguientes problemas en su próxima entrega:

Falta el derecho de notificación de inserción: su aplicación incluye una API para el servicio de notificación de inserción de Apple, pero la autorización de la aplicación de entorno no se encuentra en la firma de la aplicación. Para resolver esto, asegúrese de que su ID de aplicación esté habilitada para notificaciones automáticas en el Portal de aprovisionamiento. Luego, firme su aplicación con un perfil de aprovisionamiento de distribución que incluya el derecho de aps-environment. Esto creará la firma correcta y puede volver a enviar su aplicación. Consulte “Aprovisionamiento y desarrollo” en la Guía de progtwigción de notificación local y de envío para obtener más información. Si su aplicación no utiliza el servicio Apple Push Notification, no se requiere ninguna acción. Puede eliminar la API de futuras presentaciones para detener esta advertencia. Si utiliza un marco de terceros, es posible que necesite ponerse en contacto con el desarrollador para obtener información sobre la eliminación de la API.

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 App Store

Lo extraño es que fui a developer.apple.com -> Certificates, Identifiers & Profiles y mi AppId sí tiene habilitadas las notificaciones push. No estoy haciendo nada diferente de lo que he hecho alguna vez, 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 progtwigción de notificación de inserción se rompió en el correo electrónico, por lo que no es una buena señal.

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

También tengo el mismo problema, y ​​estoy seguro de que la notificación Push está desactivada de manera predeterminada en Xcode8. No lo noté Ten cuidado al respecto

capacidad

De las notas de la versión de Xcode:

Xcode 8 no copia automáticamente el derecho de aps-environment de los perfiles de aprovisionamiento en tiempo de comstackción. Este comportamiento es intencional. Para usar esta autorización, active 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 de aps-environment no requiriera el plist, pero muchos otros lo hicieron.

Para aquellos de ustedes que no quieren presionar ciegamente “Fix Me” y no tienen actualmente un archivo de derechos, es solo un archivo plist que se hace referencia en la configuración de comstackción de su proyecto en “Derechos de firma de código”

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 objective de su aplicación. Entonces, como dijo Unome (OP), debes verificar que las Notificaciones Push estén activadas.

Para mí, no era un botón “Solucionarme”, pero tenía dos archivos de autorización (uno para el desarrollo y otro para la distribución). Al alternar la capacidad de notificaciones push, se agregaría la clave aps-environment , con el development del valor, al archivo de derechos de desarrollo, pero no se agregaría al archivo de derechos de distribución. La copia de la misma clave a la distribución funcionó para eliminar el correo electrónico de advertencia cuando se carga a iTunes Connect.

Para la mayoría de los proyectos, debería bastar con alternar las notificaciones automáticas, o si ya están activadas pero la clave no está en las autorizaciones, intente activarla y volver a activarla.

Después de un día de lucha con Xcode 8, no pudimos entender por qué el desarrollo de aps-environment NO se agregó a nuestras comstackciones de depuración. Faltaba en la sección de derechos en la aplicación creada para la prueba de depuración … aunque teníamos HABILITADO, existía la nueva Capacidad y el archivo de derechos. El problema es que el archivo de derechos debe establecerse para CUALQUIER SDK en la Configuración de comstackción de Xcode para derechos de depuración.

captura de pantalla

Administrar automáticamente la firma no estaba disponible para mí

Administrar automáticamente la firma no estaba disponible para mí, revisé y funcionó bien para mí.

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

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

enter image description here enter image description here

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

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

Intenté desactivar / volver a habilitar Administrar 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 tenga que deshabilitar / volver a habilitar Gestionar automáticamente la firma después de las protecciones.

Si está utilizando marcos de Firebase y no está utilizando notificaciones push, hay dos soluciones 1. Simplemente presente el mensaje de “problema” que se envía a todo su equipo cada vez que carga un archivo binario. La aplicación seguirá siendo aceptada como una presentación, siempre y cuando no estés usando las notificaciones, puedes 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 una presentación.

Para mí, el problema se debía a que había dos archivos de derechos: Entitlements-Debug.plist y Entitlements-Release.plist . Y solo uno de ellos (Debug) ha necesitado configuraciones en él.

Cambiar el valor múltiple de Configuraciones de comstackción> Firmar> Derechos de firma de código a un único nombre de MyAppName/MyAppName.entitlements y, a continuación, volver a habilitar el selector de Capacidades> Transferencia de notificaciones de MyAppName/MyAppName.entitlements solucionó el problema.

Espero eso ayude.

Una opción más que funcionó: copiar y pegar el origen de AppName/Entitlements-Debug.plist en AppName/Entitlements-Release.plist .