Hola a todos de nuevo, hoy publicamos un nuevo tutorial de programación de iOS en el que explicaremos cómo guardar cierta información de valor para nuestra aplicación en la memoria de nuestro dispositivo. De esta manera, veremos dos lugares en los que podemos almacenar nuestra información, y qué nos ofrece uno respecto al otro. Vamos allá.

Guardar datos en NSUserDefaults

Junto con nuestras aplicaciones de iOS, normalmente definimos una base de datos para la aplicación, que es la que se encarga de guardar la información de la aplicación necesaria para que esta siga funcionando cuando estemos offline.

Sin embargo, la información que almacenamos en la base de datos de la aplicación desaparece cada vez que cerramos la aplicación, es decir, cada vez que la matamos cuando se encuentra en segundo plano, así como también cuando reiniciamos el teléfono.

A pesar de esto, podemos decir que existe un espacio al que nuestras aplicaciones tienen acceso que se guarda en la memoria del teléfono y perdura bastante más que la base de datos de la aplicación, llamado User Defaults. Este espacio, que está pensado para almacenar datos como la configuración de una aplicación, nos permite guardar pequeña información que se mantendrá en el teléfono siempre que la aplicación esté instalada. Con esto, si paramos la ejecución de la aplicación seguiremos teniendo estos datos guardados, si reiniciamos el teléfono también, sin embargo, en el momento que desinstalemos la aplicación del teléfono, perderemos estos datos.

Ahora veremos cuál sería el código que nos permitiría leer y guardar datos en el espacio de User Defaults.

  • Escribir datos en NSUserDefaults

NSUserDefaults*defaults = [NSUserDefaultsstandardUserDefaults];

[defaults setObject:appToken forKey:@"AppToken"];

[defaults synchronize];

  • Leer datos de NSUserDefaults

NSUserDefaults*defaults = [NSUserDefaultsstandardUserDefaults];

NSString*appToken = [defaults objectForKey:@"AppToken"];

 

En el caso que hemos visto anteriormente, utilizando User Defaults, podemos guardar cierta información en nuestro dispositivo que perdurará mientras la aplicación esté instalada en el teléfono. Esto es bueno, ya que aunque paremos la ejecución de la aplicación podemos seguir manteniendo esta información. Sin embargo, en ocasiones querremos guardar y mantener cierta información durante aún más tiempo.

Guardar datos en el Keychain

De la misma manera que hemos visto en el caso de User Defaults, existe otro espacio al que nuestras aplicaciones tienen acceso que se guarda en la memoria del teléfono y perdura bastante más que la base de datos de la aplicación y que User Defaults, llamado Keychain. Este espacio, que está pensado para almacenar datos propios del dispositivo, nos permite guardar cierta información que se mantendrá prácticamente siempre en el teléfono (faltaría probar si permanece al modificar la versión del sistema operativo instalado en el teléfono).

Con esto, si paramos la ejecución de la aplicación seguiremos teniendo estos datos guardados, si reiniciamos el teléfono también, y también seguirán manteniéndose si desinstalamos la aplicación del teléfono y la volvemos a instalar, incluso si antes de reinstalarla reiniciamos el dispositivo.

Ahora veremos cuál sería el código que nos permitiría leer y guardar datos en el espacio Keychain.

Deberemos añadir los archivos SSKeychain .h y .m, que encontraremos aquí:

https://github.com/samsoffes/sskeychain

Además, deberemos añadir a nuestro proyecto el framework:

“Security.framework”

SGTAppDelegate.m

#import “SSKeychain.h”

#import <Security/Security.h>

Tras esto, añadiremos el código necesario para gestionar los datos que queremos almacenar, vamos a explicarlo paso a paso:

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

//Cogeremos el ID del dispositivo almacenado en el Keychain, y en caso de que no esté disponible por ser la 1a ejecución de la aplicación, lo generamos y almacenamos

NSString*retrieveuuid = [SGTAppDelegategetDeviceUUID];

if (retrieveuuid == nil) { //Primera ejecución de la aplicación, crearemos el identificador de dispositivo

NSString*uuid = [selfcreateNewUUID];

//Guardaremos la nueva clave que acabamos de crear en el Keychain

[SSKeychainsetPassword:uuid forService:@"com.company.appname"account:@"user"];

//Este proceso sólo se ejecutará una vez

}

}

+ (NSString*)getDeviceUUID

{

return[SSKeychainpasswordForService:@"com.company.appname"account:@"user"];

}

- (NSString*)createNewUUID

{

CFUUIDReftheUUID = CFUUIDCreate(NULL);

CFStringRefstring = CFUUIDCreateString(NULL, theUUID);

CFRelease(theUUID);

return[(NSString*)string autorelease];

}

Si hacemos la prueba, veremos como estos datos permanecen en nuestro dispositivo aunque desinstalemos la aplicación. Ahora que conocemos estas 2 maneras de almacenar cierta información para nuestra aplicación, podremos guardar ciertas preferencias que nos ayudarán con el uso de esta.

Espero que os haya sido útil este pequeño tutorial sobre los espacios de almacenamiento de datos en la memoria del dispositivo. Nos vemos en el próximo post :)

Saludos a todos!!


0 Comentarios Post bajo los tags: , , , , , , ,

No comments currently exist for this post.
Leave a Reply:

Suscríbete al blog
Suscribirse a: Posts
Todo sobre las BB Creams Categorías
Sitios de interés