ver samsung llavero internet desde datos cómo contraseñas compartir como aprobar acceder iphone ios ipad ios5 keychain

iphone - samsung - Acceso al grupo llavero para compartir datos entre mis aplicaciones existentes



llavero de icloud en windows (3)

Tengo muchas aplicaciones iOS en vivo en AppStore. Ahora, para la próxima versión de aplicaciones, quiero mantener un dato para cada aplicación para compartir en KeyChain. Por lo que sé, necesito proporcionar el mismo grupo de acceso a Llaveros en la clase KeychainItemWrapper de Apple.

*keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Any string" accessGroup:<string representing access group>];

Sé acerca de las URL personalizadas y no sirve de nada, ya que quiero que los datos sean persistentes.

Todas mis aplicaciones tienen ID de semilla diferente como puedo ver en el portal de aprovisionamiento. Sé que el principal requisito previo para el acceso compartido de llavero es que todas las aplicaciones tienen un ID de semilla común.

Ahora mi pregunta es ¿cómo me aseguro de que en este senario pueda usar Keychain para compartir datos entre todas estas aplicaciones?

¿Es posible cambiar el Id. Inicial del paquete de todas las aplicaciones a través del portal de perfil de Aprovisionamiento sin dañar la funcionalidad (aunque quiero evitarlo ya que hay tantas aplicaciones).

¿Hay alguna forma de que pueda agregar la identificación de conjunto de todas las aplicaciones en un archivo y compilar todas las aplicaciones con ese archivo en proyecto para lograr esto? Sé acerca de "keychain-access-groups", ¿necesito crear un archivo plist y agregar el ID de conjunto de todas las aplicaciones en él?

Apreciar cualquier ayuda en este sentido.


Ahora puedes usar UIPasteboard

//First app, install->run->close->delete UIPasteboard* board = [UIPasteboard pasteboardWithName:@"com.company.wtv" create:YES]; board.persistent=YES;// persistent to make what you write persist after your app closes, or gets deleted. [board setValue:@"ccccc" forPasteboardType:@"com.company.wtv.sharedValue"]; //Second app, installed after first one is deleted and ran this one... While bundle identifier and bundle seed different (i tried it on adhoc, not really releasing the app, but i htink the same) NSData* result=nil; NSString*resultStr=nil; result =[board valueForPasteboardType:@"com.company.wtv.sharedValue"]; resultStr=[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];// I got resultStr containing ccccc

compruebe la documentación de UIPasteboard para obtener más información. Volveré después de usar esto para las aplicaciones de mi tienda, en caso de problemas


No puede cambiar la ID del paquete de su aplicación una vez que se haya ingresado en la AppStore. Tampoco puedes hacer que una aplicación lea la información del llavero que fue colocada allí por otra aplicación (con una ID de paquete diferente). La solución: necesitarás un derecho con el que puedas acceder prácticamente a todos los datos.


Si tiene ID de semilla de paquete diferente (los diez caracteres alfanuméricos que preceden al identificador de paquete, la X en XXXXXXXXXX.com.company.application ), no puede compartir un grupo de acceso. Es una restricción de parte de Apple y eludirlo no está permitido. Sugiero que encuentre otra solución para compartir datos de forma segura (posiblemente fuera del dispositivo, en un servidor, pero no en iCloud ya que tiene las mismas restricciones).

Información general sobre grupos de acceso de llavero:

Desde iPhone OS 3.0, ha sido posible compartir datos entre una familia de aplicaciones. Esto puede proporcionar una mejor experiencia de usuario si sigue la ruta común de las aplicaciones gratuitas / premium o si tiene un conjunto de aplicaciones relacionadas que necesitan compartir algunas configuraciones de cuenta comunes.

El principal requisito previo para el acceso compartido de llavero es que todas las aplicaciones tienen un ID de semilla común. Para que quede claro lo que esto significa, recuerde que una ID de aplicación consta de dos partes:

<Bundle Seed ID> . <Bundle Identifier>

El identificador de semilla del paquete es una cadena de diez caracteres única (dentro de la tienda de aplicaciones) que Apple genera cuando crea una ID de aplicación por primera vez. El identificador del paquete generalmente se configura como una cadena de nombre de dominio inverso que identifica su aplicación (por ejemplo, com.yourcompany.appName ) y es lo que usted especifica en el archivo Info.plist de la aplicación en Xcode.

Por lo tanto, cuando desee crear una aplicación que pueda compartir el acceso de llavero con una aplicación existente, debe asegurarse de usar el ID de semilla del lote de la aplicación existente. Lo hace cuando crea la nueva ID de aplicación en el portal de aprovisionamiento de iPhone. En lugar de generar un nuevo valor, seleccione el valor existente de la lista de todos sus ID de semilla del paquete anterior.

Una advertencia, mientras que usted puede crear un perfil de aprovisionamiento con un comodín para el identificador de paquete, nunca he podido obtener el acceso compartido de llavero entre las aplicaciones que lo usan. Funciona bien con identificadores completamente especificados (sin comodín). Dado que una serie de otros servicios de Apple, como las notificaciones push y la compra en la aplicación también tienen esta restricción, tal vez no sea una sorpresa, pero todavía no he encontrado esto documentado para el acceso a la llave.

Una vez que tenga la configuración de los perfiles de suministro con un identificador de semilla del paquete común, el resto es bastante fácil. Lo primero que debe hacer es registrar el grupo de acceso de llavero que desea usar. El grupo de acceso de llavero se puede nombrar prácticamente como quieras siempre que comience con la identificación de semilla del paquete. Entonces, por ejemplo, si tengo dos aplicaciones de la siguiente manera:

ABC1234DEF.com.useyourloaf.amazingApp1 ABC1234DEF.com.useyourloaf.amazingApp2

Podría definir un grupo común de acceso a llavero de la siguiente manera:

ABC1234DEF.amazingAppFamily

Para permitir que la aplicación acceda a este grupo, debe agregar un archivo plit de derechos al proyecto usando xCode. Use Agregar -> Nuevo archivo y seleccione la plantilla Derechos en la sección Firma de código del sistema operativo iPhone. Puede asignarle al archivo el nombre que desee (por ejemplo, KeychainAccessGroups.plist ). En el archivo, agregue un nuevo elemento de matriz llamado keychain-access-groups y cree un elemento en la matriz con el valor de nuestro grupo de acceso de llavero elegido:

Nota: No cambie el elemento get-task-allow que se crea de manera predeterminada en el archivo de derechos, a menos que esté creando una distribución ad-hoc de su aplicación (en cuyo caso debe desmarcar esta opción).

Este mismo proceso debe repetirse para todas las aplicaciones que comparten el identificador de semilla del paquete para permitirles acceder al grupo de llavero. Para almacenar y recuperar valores de este grupo, se necesita agregar un valor adicional al diccionario pasado como argumento a los servicios de llavero. Usando el ejemplo de la publicación anterior sobre el acceso simple a un llavero de iPhone, el diccionario de búsqueda obtiene el siguiente elemento adicional:

[searchDictionary setObject: @"ABC1234DEF.amazingAppFamily" forKey: (id)kSecAttrAccessGroup];

Un último comentario, al usar un grupo de acceso a llavero compartido, no le impide almacenar valores en un llavero privado de aplicaciones también. La aplicación de ejemplo Apple GenericKeychain crea dos aplicaciones que almacenan datos en un llavero privado y de grupo.

Fuente: Use Your Loaf