xcode push ios-provisioning settings.bundle

xcode - Bundle Identifier y push certificate... aps-environment entitlement error



ios-provisioning settings.bundle (19)

He leído ¿De dónde toma xcode el identificador de la aplicación? , Formato de identificador de paquete XCode de {PRODUCT_NAME} , y carga más pero ...

Estoy tratando de recibir notificaciones push y obtener el temido

"Error Domain = NSCocoaErrorDomain Code = 3000" no se encontró una cadena de autorización ''aps-environment'' válida para la aplicación "UserInfo = 0x15b200 {NSLocalizedDescription = no se ha encontrado una cadena de autorización ''aps-environment'' válida para la aplicación}" error.

Estoy bastante seguro de haber seguido todos los pasos correctamente, incluyendo:

  • realizó el certificado de inserción mucho antes del certificado de aprovisionamiento
  • hecho un ''Entitlements.plist''
  • agregó un booleano get-task-allow y lo configuró en true (versión ad-hoc)

El único que creo que no puedo entender es el identificador de paquete

El certificado push es para

XXXXXXXXXX.com.julianbaker.pwcnewsuk

El Bundle Indentifier en PwCNewUK-Info.plist es para

com.julianbaker.${PRODUCT_NAME:rfc1034identifier}

Si lo cambio manualmente a

com.julianbaker.pwcnewsuk

Obtengo un error de discrepancia UDID ya que la aplicación se ve como PwCNewsUK

Cuando busqué en Google esto, parece haber cierta confusión sobre el tema, pero parece que tienen que coincidir.

PREGUNTA:

¿Qué debería ser el Bundle Indentifer para coincidir con el certificado push de
XXXXXXXXXX.com.julianbaker.pwcnewsuk?

PREGUNTA:

¿Debo agregar un derecho de "aps-environment" al perfil de aprovisionamiento y, de ser así, dónde y cómo? (Ver http://www.airplaysdk.com/node/3174 entre otros)

¡Me encanta el desarrollo de iPhone pero a veces puede ser un ataque de cabeza!


¡Ninguno de los anteriores funcionó para mí!

  1. Eliminar todos los perfiles de provisión en Xcode Organizer
  2. Eliminar todos los certificados de Desarrolladores en Keychain
  3. Eliminar todos los perfiles de provisión en el dispositivo iPhone
  4. En iOS Portal de aprovisionamiento , elimine el Perfil de aprovisionamiento de desarrollo que fue creado automáticamente por Xcode
  5. Cree un nuevo perfil de aprovisionamiento asignando la combinación correcta (certificado / identificación de dispositivo / dispositivo)
  6. Descargue el nuevo perfil de aprovisionamiento
  7. Importe el nuevo perfil de aprovisionamiento en Xcode Organizer
  8. CMD + Opción + Shift + K
  9. CMD + Shift + K
  10. CMD + R
  11. Hurra :)

Asegúrate de haber seleccionado correcto. Perfil de aprovisionamiento. Descubrí que estaba intentando con el perfil de Provisión de equipos. ( Para el identificador de la aplicación: * ) Más abajo en la lista, había uno correcto para la aplicación.


Asegúrese de estar utilizando la aplicación de la manera correcta con el perfil de aprovisionamiento.

Lo que quiero decir es que si habilitaste tu aplicación solo para notificaciones de distribución y estás intentando que las notificaciones push funcionen al construir con XCode, esto no funcionará.

Me encontré con este problema, y ​​al habilitar la notificación push para Development para la ID de la aplicación, y luego usar el perfil de aprovisionamiento de desarrollo, ya no recibí el error y la vista de alerta correcta me preguntó si quería recibir notificaciones push.


En ''Proyecto'' -> ''Configuraciones de compilación'' -> ''Firma de código'', asegúrese de haber seleccionado el perfil de Aprovisionamiento correcto (el que tiene habilitado el empuje).

Eso era todo lo que necesitaba cambiar para que funcione.


En mi caso, la solución para este error resultó ser simple después de horas de retoques con certificados ...

En la pestaña Capabilities de la configuración del proyecto, tuve que habilitar el indicador de Push Notification para que se generaran los archivos de entorno.

macOS Sierra 10.12 - Xcode 8.1


En realidad, su perfil provisional se eliminó del sitio del desarrollador de Apple. Y obtiene un error para


Encontré esta pregunta cuando me movía de un entorno de desarrollo a uno de producción en una aplicación en la que estoy trabajando. Este proceso implicó la creación de un nuevo perfil, un nuevo ID de aplicación, etc. Creé el ID de la aplicación y un perfil, pero el Agente del equipo tuvo que configurar las notificaciones automáticas. Me encontré con el problema de "cadena de derechos ''no válida'' aps-environment ''encontrada para la aplicación" cuando intenté reanudar las pruebas con el nuevo perfil (después de que la aplicación se había configurado para notificaciones push). Entonces recordé leer una pequeña advertencia en la documentación:

"Tiene que modificar el perfil de alguna manera (por ejemplo, alternar una opción) para que el portal genere un nuevo perfil de aprovisionamiento. Si el perfil no está" sucio ", se le otorga el perfil sin los derechos de inserción. "

Fuente: Guía de programación local y de notificación push

Para mí, "ensuciar" el perfil de aprovisionamiento y volver a instalarlo era todo lo que se necesitaba para solucionar el problema. Según la documentación, esto fue necesario porque el perfil de aprovisionamiento se creó antes de que la aplicación se configurara para las notificaciones automáticas. Esto puede ayudar o no a cualquiera, pero esto probablemente explica (y elimina) la necesidad de agregar algo manualmente al perfil de aprovisionamiento.


Esencialmente, la respuesta es la misma vaga que todos dicen

  • Asegúrese de tener agregado un "Entitlements.plist" (Nuevo Archivo / Firma de Código / Derechos)
  • Agregue "get-task-allow" (booleano desactivado) a Entitlements.plist
  • Agregue el par "producción" de "aps-environment" a Entitlements.plist: este último paso puede ser innecesario, pero fue uno de los pasos que hice justo antes de que funcionara
  • Borre los archivos de la antigua versión de mobileprovision de iPhone / iPod (En Configuraciones / General),
  • Elimina los archivos de la versión anterior de mobileprovision desde XCode Organizer
  • Eliminar aplicación de iPhone / iPod
  • Salir de XCode
  • Descargar una copia nueva del certificado de aprovisionamiento
  • Compruebe el par de "producción" de "aps-environment" en el certificado con un editor de texto
  • Comience XCode
  • Agregue un nuevo archivo de provisión de móvil arrastrándolo al icono de XCode Doc
  • Asegúrese de haber reasignado / asignado el certificado correcto en la información de destino: firma de código: identidad de firma de código
  • Verifica que los resultados de la compilación estén en el perfil correcto y estén firmados correctamente

Repita estos pasos con calma hasta que funcione, me tomó alrededor de cinco va de varias combinaciones. También cambié de desarrollo a Ad-hoc, lo que aparentemente no es necesario, pero garantizó un nuevo archivo de suministro móvil.


Me di cuenta de esto después de unas horas, así que además de lo que dijo JulianB,

  • asegúrese de tener un ícono de aplicación . Probablemente tengas uno, pero agregué push cuando estábamos entre versiones de iconos. Probé un montón de cosas diferentes y al final eso fue todo lo que tomó, por lo que podría no ser ni siquiera un cert o un problema de configuración de firma.
  • También he leído un archivo de imagen corrupta que también podría ser la causa
  • No agregué / veo una clave aps-environment en my entitlements.plist
  • limpiar todos los objetivos antes de construir

Me encontré con el mismo problema "no válido ''aps-environment'' cadena de derechos encontrado para la aplicación", pero las soluciones anteriores no me funcionaron.

No pude encontrar documentación muy buena acerca de este error o solo la clave "aps-environment".

Después de algunos retoques, esto es lo que me solucionó el problema:

Abra su certificado de aprovisionamiento de desarrollo, "Appname.mobileprovision" con un editor de texto, busque la clave "Entitlements" y luego agregue todos los valores encontrados aquí a su archivo de derechos a los que hace referencia su configuración de derechos de firma de código.

Aquí hay un ejemplo de las claves / valores que encontrará en el interior:

<key>application-identifier</key> <string>xyz.com.xyz.xyz</string> <key>aps-environment</key> <string>development</string> <key>com.apple.developer.ubiquity-container-identifiers</key> <array> <string>xyz.*</string> </array> <key>com.apple.developer.ubiquity-kvstore-identifier</key> <string>xyz.*</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>xyz.*</string> </array>

Después de agregar todos estos valores a mi archivo de derechos, mi aplicación se crea con éxito y finalmente puedo volver a trabajar en las notificaciones automáticas.

No estoy seguro de si se supone que estos valores se agregarán automáticamente a su archivo de derechos por XCode, pero ciertamente no se generaron para mí en mi proyecto.


Mi problema fue esto Creé una aplicación que tenía notificaciones configuradas, y en la aplicación delegada me estaba registrando para recibir notificaciones automáticas con:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

Pero antes de lanzar la aplicación tuve que crear un nuevo perfil de aprovisionamiento en otro portal para desarrolladores. Creé un nuevo ID de aplicación, un nuevo aprovisionamiento para desarrollo y distribución, un nuevo aprovisionamiento descargado, en el destino de la aplicación establecí el aprovisionamiento correcto. También cambié el identificador del paquete. Pero estaba obteniendo ese error.

El problema fue que la nueva AppId no estaba configurada para notificaciones push, sino para llamadas

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

estaba creando un error Cuando configuré notificaciones push el error no volvió a aparecer.


Mi solución fue eliminar y crear nuevamente el Perfil de Aprovisionamiento de Desarrollo . Fue catalogado como "Inválido" - no caducado y también se renovó (Xcode 4.3.2 e iOS 5.1)


Para mí funcionó después de cambiar el identificador del paquete a algo aleatorio. Asegurándose de que el error de firma aparece (elimine todos los perfiles de provisión del organizador y dispositivo y realice una compilación limpia CMD + OPT + SHFT + K luego CMS + SHFT + K y luego CMD + R ) y luego cambie el identificador de paquete de nuevo a apropiado.


Tuve este problema, el escenario fue:

Configuré una identificación de la aplicación sin soporte de notificaciones push. Estoy usando Xcode 5.1 + iOS 7.1

Más tarde, editó la id de la aplicación para agregar notificaciones push en desarrollo y producción.

Creé los certificados APN para ambos.

Cuando prueba PN usando su dispositivo conectado a Xcode, todo funciona bien. El problema aparece cuando liberas la aplicación a la producción, sigues obteniendo:

"Error Domain=NSCocoaErrorDomain Code=3000 "no valid ''aps-environment'' entitlement string found for application" UserInfo=0x15b200 {NSLocalizedDescription=no valid ''apsenvironment'' entitlement string found for application}" error.

La solución que funcionó para mí fue :

  1. Elimine los perfiles de aprovisionamiento para el desarrollo y la distribución (Xcode y portal de desarrollador).
  2. Elimine su ID de aplicación (portal de desarrollador).
  3. Cree una nueva ID de aplicación con soporte de notificaciones push para desarrollo y producción.
  4. Cree nuevos perfiles de aprovisionamiento utilizando la NUEVA ID de aplicación .
  5. Instálalos en Xcode.
  6. Prueba de lanzamiento de desarrollo y distribución.

Usando XCode4 y recibiendo la misma cadena de autorización "no válida ''aps-environment'' encontrada para la aplicación" tuve que hacer lo siguiente:

  • Elimine los perfiles de aprovisionamiento anteriores de los paneles Biblioteca + Dispositivo en Organizador
  • Regenerar un nuevo perfil con el desarrollador de APN habilitado desde el sitio web del portal de desarrolladores
  • Asegúrese de que se haya agregado un nuevo perfil a los paneles Biblioteca + Dispositivo en Organizador
  • Eliminar manualmente mi aplicación de mi dispositivo (sosteniendo hasta que se agite y golpee X)
  • CMD + OPT + MAYÚS + K (Carpeta de compilación limpia) y CMD + MAYÚS + K (Limpiar)
  • Establezca el perfil adecuado en Proyecto> Configuraciones de compilación> Firma de código
  • Asegúrese de que ''Usar derechos'' no esté marcado en Destinos> Resumen

Yo tuve el mismo problema. Para mí, la solución fue así:

  1. Se eliminaron y volvieron a cargar los perfiles de aprovisionamiento del organizador.
  2. Seleccioné mi perfil de aprovisionamiento nombrado en configuración de proyecto-> firma de código. De alguna manera, quería usar la identidad blabla. *.

El perfil de comodín ([prefijo]. *) No funcionará cuando trate de ejecutar una aplicación habilitada para APN, debe especificar el perfil habilitado para APN.


la solución para 10.8 Xcode 4.4 es abrir el archivo appname.entitlements

y si la clave DataProtectionClass tiene el valor NSFileProtectionComplete , elimínelo.

Eliminar esta clave me permite probar aplicaciones de Xcode en dispositivos (no estaba afectando a la simulación).


Preparar:

Mac OS X 10.8 + Xcode 4.4

Mi solución simple:

  1. Vuelva a emitir su perfil de aprovisionamiento ad hoc después de que haya configurado las notificaciones push para su ID de aplicación y las importe a Xcode.
  2. Eche un vistazo a su carpeta .xcodeproj (haga clic con el botón derecho en -> Mostrar contenido del paquete) y elimine la carpeta xcuserdata .
  3. Eso es ;)

Algunos consejos sobre ese tema:

Después de activar Notificaciones Push para mi aplicación, de repente ya no pude crear archivos ad hoc. Me encontré con errores en el registro de mi consola en mi iPhone al intentar instalar mi aplicación, como los que se muestran a continuación:

Apr 1 20:56:10 unknown installd[384] <Error>: entitlement ''keychain-access-groups'' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] <Error>: entitlement ''get-task-allow'' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] <Error>: entitlement ''application-identifier'' has value not permitted by a provisioning profile Apr 1 20:56:10 unknown installd[384] <Error>: 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394 Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.44jV0O/foo_extracted/Payload/PersonalTrainer-Tester-iPhone.app Apr 1 20:56:11 unknown com.apple.itunesstored[392] <Notice>: MobileInstallationInstall: failed with -1 Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 install_application: Could not preflight application install Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 handle_install: API failed Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003 Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_error: Could not send error response to client

Hay alguna nota técnica que recomienda el uso de codesign -d --entitlements - <YourAppName>.app para verificar si su aplicación está firmada correctamente para las Notificaciones Push de Apple. ¡En caso de que la salida del comando codesign no tenga un aps-environment configurado para producción o desarrollo, hay algo sospechoso!

Por lo que sé hasta ahora, mis aplicaciones firmadas con un perfil de aprovisionamiento adhoc siempre tienen una provision.mobile embedded.mobileprovision dentro de la <YourAppName>.app con una parte específica en ellas, como:

<key>Entitlements</key> <dict> <key>application-identifier</key> <string>ABCDEFGH.com.myappname.tester</string> <key>aps-environment</key> <string>production</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string>ABCDEFGH.*</string> </array> </dict>

Después de usar codesign me di cuenta de que el binario real en <YourAppName>.app incluía algunos XML, que decía algo muy diferente a mi archivo embedded.mobileprovision :

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>ABCDEFGH.com.myappname.tester</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>ABCDEFGH.com.myappname.tester</string> </array> </dict> </plist>

Supongo que esta es la causa del mensaje de error que todos estamos experimentando. (aunque este error puede tener algunas raíces diferentes, así como otras publicaciones en sugieren)

The executable was signed with invalid entitlements. The entitlements specified in your application''s Code Signing Entitlements file do not match those specified in your provisioning profile. (0xE8008016).

Supongo que hay algún error en Xcode que impide que la configuración de tu lista se actualice en tus esquemas, lo que hace que tu aplicación se firme con el perfil de aprovisionamiento incorrecto al final. Por lo tanto, al eliminar la carpeta xcuserdata, elimina todos los esquemas. Por lo tanto, Xcode los volverá a crear la próxima vez con la configuración adecuada y estará contento de nuevo.


Haz que el perfil sea correcto y esto funciona para mí. Espera esta ayuda.