Actualmente estoy almacenando el nombre de usuario (correo electrónico) y un hash salado del correo electrónico y la contraseña en iOS KeyChain. Estoy usando la versión ARC'ified que se encuentra here.iOS KeyChain no recuperar los valores del fondo
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
[wrapper setObject:APP_NAME forKey:(__bridge id)kSecAttrService];
[wrapper setObject:email forKey:(__bridge id)kSecAttrAccount];
[wrapper setObject:token forKey:(__bridge id)kSecValueData];
Todo esto funciona bien cuando tengo que tirar de la señal de salida para mis llamadas de red mientras la aplicación está activa. Funciona para iniciar sesión desde un inicio limpio, así como todas las llamadas de red en todo momento. El problema comienza cuando la aplicación está en segundo plano.
Tenga en cuenta que esto solo ocurre esporádicamente y todavía no he definido el contenido de una versión o dispositivo de iOS específico.
El usuario dispara una ubicación (monitoreo de región) y quiero actualizar el servidor con su estado. Intento sacar la ficha del llavero, de la misma manera que hago para cada otra llamada de red, y actualizo el estado. Pero para algunos usuarios, el valor es nulo. Sin eso, no puedo actualizar las cosas de la red. ¿Por qué funcionaría esto para la mayoría, pero no para un pequeño porcentaje?
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyCustomIdentifier" accessGroup:nil];
NSString *token = [wrapper objectForKey:(__bridge id)kSecValueData];
he vuelto a la versión no-ARC del keychainwrapper, pero aún así obtener los mismos resultados. Agradecería cualquier comentario sobre esto. Es solo una pequeña parte de mis usuarios, pero es un problema que me gustaría solucionar y no preocuparme. Gracias por adelantado.
Además, todos mis antecedentes se configuran en un backgroundTask para evitar que se agote el tiempo de espera. No estoy teniendo ningún problema con el trabajo que rodea al llavero, pero no dejo que las cosas avancen hasta que mi token esté lleno.
EDIT He descubierto mi problema con el llavero al no recuperar los valores del fondo. Publicaré la respuesta a continuación y la aceptaré, ya que creo que esta pregunta puede ser valiosa para otros más adelante.
Gracias! Esto fue muy útil. –
Me alegro de poder ayudar. Me desconcertó por mucho tiempo. –
¡Muchas gracias por compartir esto! – pxlshpr