una son saber que para guidelines gratis español dentro compras compra como cancelar apple app aplicaciones iphone ios xcode provisioning-profile ios-provisioning

iphone - son - ¿La renovación de un perfil de aprovisionamiento afecta el acceso al llavero cuando envío una actualización de la aplicación a la AppStore?



compras dentro de la app gratis (3)

Los llaveros que puede usar están determinados por keychain-access-groups en los derechos, que se limitan a un subconjunto de los keychain-access-groups en el perfil de aprovisionamiento, que está determinado por el prefijo "semilla de paquete" / " "/ ( ApplicationIdentifierPrefix en el perfil de aprovisionamiento), establecido en el" ID de aplicación ".

Suponiendo que haya mantenido la aplicación enviada anteriormente (o que tenga la .ipa de iTunes, que es solo un less Foo.app/embedded.mobileprovision zip), mire en el less Foo.app/embedded.mobileprovision tanto en la aplicación antigua como en la nueva ( less Foo.app/embedded.mobileprovision en un terminal debería haga el truco, o puede abrirlo en un editor de texto, aunque a veces eligen los finales de línea incorrectos). Estás buscando algo como esto (es posible que veas claves adicionales para push / iCloud):

<key>Entitlements</key> <dict> <key>application-identifier</key> <string>A1B2C3D4E5.com.example.MyApp</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string>A1B2C3D4E5.*</string> </array> </dict>

También puede ver los derechos reales con los que se firmó su aplicación:

codesign -d --entitlements - Foo.app/Foo | vis

IIRC los grupos de acceso de llavero están predeterminados para, por ejemplo, A1B2C3D4E5.com.example.MyApp , pero puede configurar esto como desee siempre que coincida con A1B2C3D4E5.* (Xcode 4 incluso tiene un editor de derechos de GUI agradable). Si el prefijo del paquete es diferente, eso causará el problema que está viendo. Creo que puedes volver a cambiarlo siempre que no hayas habilitado push / Game Center / etc.

Tengo una aplicación para iPhone que usa el llavero para el almacenamiento relacionado con la autenticación.

También tenía un perfil de aprovisionamiento que expiraba.

En la documentación para el acceso al llavero dice:

En iPhone, los derechos de Llavero dependen del perfil de aprovisionamiento utilizado para firmar su aplicación. Asegúrese de usar constantemente el mismo perfil de aprovisionamiento en diferentes versiones de su aplicación.

Debido a que mi perfil de aprovisionamiento estaba expirando, lo renové (en el portal de aprovisionamiento), lo descargué y hice doble clic en él, lo que lo "instaló" en el organizador de XCode.

Después de enviar una actualización de la aplicación a la tienda de aplicaciones, básicamente veo un llavero vacío (se le pide a los usuarios que inicien sesión nuevamente).

Mi pregunta es: ¿la renovación del perfil de aprovisionamiento utilizado para firmar una aplicación afecta el acceso al llavero cuando se usa el perfil renovado para enviar una actualización a la aplicación? Los documentos solo dicen que se use "el mismo perfil de aprovisionamiento", pero no está claro si un perfil renovado cuenta como un perfil diferente (como lo sugiere mi experiencia descrita anteriormente).

¿Lo que da?

Actualizar

Resuelto con ayuda de la respuesta de tc. Al observar el archivo embedded.mobileprovision en cada uno de los .ipas enviados a apple, se reveló que se utilizaron un certificado de vencimiento y un perfil de aprovisionamiento para firmar la versión x de la aplicación, y un certificado y un perfil de aprovisionamiento diferentes se usaron para firmar la versión x + 1 de la aplicación (culpable: función "Selector automático de perfil" de XCode para la identidad de firma de código).

El primer certificado y el perfil quedaron cuando un desarrollador usó una cuenta diferente del Programa de Desarrollador iOS para desarrollar una aplicación no relacionada (en la misma máquina, con el mismo usuario de OSX). Los perfiles de aprovisionamiento en varias cuentas de programas de desarrolladores de iOS aparentemente se almacenan todos juntos en ~/Library/MobileDevice/Provisioning Profiles , por lo que todos son candidatos para la función de selección automática de perfiles de XCode.

Cambié la identidad de firma de código seleccionando un perfil de distribución totalmente diferente que confundí con una versión renovada / válida del perfil de distribución que expiraba, y presenté una actualización. Misma aplicación, certificado diferente, perfil de aprovisionamiento diferente == llavero vacío. D''OH.


Mientras la identificación del paquete de la aplicación no cambie, no habrá ningún problema con el llavero.

Teniendo en cuenta que todos tenemos que renovar nuestros certificados y perfiles de distribución cada año, sería un caos si al hacerlo se rompiera el acceso de llavero para nuestras aplicaciones.

Tengo una aplicación que ha estado en la App Store durante más de 4 años. Utiliza el llavero. Se ha actualizado varias veces a lo largo de los años, muchas veces con un perfil de aprovisionamiento actualizado. No ha habido problemas de llavero.


Para alguien más buscando, tuve un problema diferente. Los pasos manuales que seguí para renunciar a la ipa resultaron en que no tenía derechos, lo que significa que no hay acceso a un llavero. Así que creé un script para renunciar a la ipa pero manteniendo los derechos del original. Lo publiqué en http://baltaks.com/2013/08/resigning-enterprise-ios-apps y lo mantendré actualizado si es necesario.