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

Tengo una aplicación para iPhone que utiliza el llavero para el almacenamiento relacionado con la authentication.

También tenía un perfil de aprovisionamiento caducado.

En la documentation para acceder a los llaveros , dice:

En iPhone, los derechos de Keychain 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 caducaba, lo renové (en el portal de aprovisionamiento), lo descargué y lo presioné dos veces 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 (a los usuarios se les pide que vuelvan a iniciar session).

Mi pregunta es: ¿renovar el perfil de aprovisionamiento utilizado para firmar una aplicación afecta el acceso de llavero cuando se usa el perfil renovado para enviar una actualización a la aplicación? Los docs solo dicen usar "el mismo perfil de aprovisionamiento", pero no está claro si un perfil renovado count como un perfil diferente (como lo sugiere mi experiencia antes descrita).

¿Lo que da?

Actualizar

Resuelto con la ayuda de la respuesta de tc. Al mirar el file embedded.mobileprovision en cada uno de los .ipas enviados a Apple, se reveló que se usó un certificate de caducidad y un perfil de aprovisionamiento para firmar la versión x de la aplicación y se usó un certificate y un perfil de aprovisionamiento diferente para firmar la versión x + 1 de la aplicación (culpable: function "Selector automático de perfiles" de XCode para la Identidad de firma de código).

El primer certificate y el perfil quedaron después de que un desarrollador usó una count diferente del Progtwig para desarrolladores de iOS para desarrollar una aplicación no relacionada (en la misma máquina, con el mismo usuario de OSX). Los perfiles de aprovisionamiento en múltiples counts de progtwigs para desarrolladores de iOS aparentemente se almacenan todos juntos en ~/Library/MobileDevice/Provisioning Profiles , por lo que todos son candidatos para la function de selección automática de perfil de XCode.

Cambié la identidad de la firma del código seleccionando un perfil de distribución totalmente diferente que confundí como una versión renovada / válida del perfil de distribución que expira y envié una actualización. La misma aplicación, certificate diferente, perfil de aprovisionamiento diferente == llavero vacío. D'OH

Los llaveros que se le permite usar están determinados por keychain-access-groups en los derechos, que se limita a un subset de keychain-access-groups en el perfil de aprovisionamiento, que está determinado por el "bundle seed" / "prefix "/ ( ApplicationIdentifierPrefix en el perfil de aprovisionamiento), establecido en la" ID de la aplicación ".

Suponiendo que ha guardado la aplicación enviada anteriormente (o tiene la .ipa de iTunes, que es solo un zip), mire embedded.mobileprovision tanto en las aplicaciones antiguas como nuevas ( less Foo.app/embedded.mobileprovision en una terminal debería haz el truco, o puedes abrirlo en un editor de text, aunque a veces elegirán los finales de línea incorrectos). Está buscando algo como esto (puede ver las teclas 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 por defecto a, por ejemplo, A1B2C3D4E5.com.example.MyApp , pero puede configurar esto a cualquier cosa que desee, siempre que coincida con A1B2C3D4E5.* (Xcode 4 incluso tiene un buen editor de derechos GUI). Si el prefijo del package es diferente, eso causará el problema que está viendo. Creo que puedes cambiarlo de nuevo siempre que no hayas habilitado push / Game Center / etc.

Siempre y cuando el ID del package de su aplicación no cambie, no habrá ningún problema con el llavero.

Teniendo en count que todos tenemos que renovar nuestros certificates y perfiles de distribución cada año, sería un caos si 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. Usa 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 con los llaveros.

Para cualquier otra persona que esté 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 tenía acceso a los llaveros. Entonces 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.