Integración Nativa en iOS 18

1

Diseño de Apps iOS: Integración de Funciones Nativas

2

Animaciones de Transiciones en iOS 18: Uso de Efecto Zoom

3

Funcionalidades avanzadas de Scroll View en SwiftUI para iOS 18

4

Animaciones de Símbolos en SwiftUI: Efectos y Transiciones

5

Geometry Changes

6

Animaciones con Timeline View en Swift para iOS

7

Animación de Texto con Google Text en Aplicaciones

8

Degradados avanzados con MeshGradient en iOS 18

9

Graficación de funciones matemáticas con Charts en iOS 18

Interacción con el Usuario y el Sistema Operativo

10

Creación de Widgets en iOS con Xcode

11

Live Activities en Dynamic Island: Estado de Entrega de Producto

12

Automatización con App Intents en iOS

13

Voice Over en iOS: Mejorando la Accesibilidad de Aplicaciones

14

UIKit en SwiftUI

Multimedia y Medios Visuales

15

Acceso y manipulación de cámara en iOS nativamente

16

Acceso a Fotos en iOS con PhotosUI: Manejo de Galería y Selección

17

Reproducción de Audio y Video con AVKit y AVFoundation en iOS

Gráficos y Sensores

18

Gráficos con Metal y Swift: Crear Forma Geométrica en iOS

19

Manejo del Acelerómetro en Aplicaciones iOS

Salud y Bienestar

20

Cuenta Pasos con HealthKit de iOS

Mapas y Geolocalización

21

Mapas Interactivos en iOS: Uso Avanzado de MapKit

22

Implementación de Funciones de Localización en SwiftUI

Notificaciones y Autenticación

23

Notificaciones locales en iOS: implementación y permisos

24

Autenticación Face ID en iOS: Implementación Práctica

25

Implementación de Passkeys para Autenticación Segura en iOS

26

Autenticación con Apple en SwiftUI: Implementación Paso a Paso

Gestión de Datos y Almacenamiento

27

Persistencia de Datos en Swift: Uso de SwiftData para Apps iOS

28

Manejo seguro de contraseñas con Keychain en iOS

29

Optimización de Aplicaciones iOS con Instruments de Xcode

Fundamentos de Apps Inmersivas

30

Simulador para Aplicaciones en visionOS con Apple Vision Pro

Estrategias para el Futuro

31

Uso de SwiftUI y UIKit para Apps iOS Modernas

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Manejo seguro de contraseñas con Keychain en iOS

28/31
Recursos

¿Qué es y para qué sirve el Keychain?

Almacenar información sensible de manera local y segura es esencial en el desarrollo de aplicaciones. Aquí es donde entra el concepto de "Keychain". Este mecanismo te permite guardar información en un formato clave-valor, generalmente encriptada, ideal para manejar inicios de sesión, contraseñas y cualquier otro dato que necesite protección adicional. En resumen, los Keychains son fundamentales para mantener segura tu aplicación.

¿Cómo implementamos el uso de Keychain?

En el proyecto de ejemplo, tenemos una vista con un diseño básico que incluye botones para guardar, listar y eliminar tokens, además de un área donde se muestran estos tokens. Sin embargo, para gestionar estos tokens, necesitamos una clase específica, conocida como "KeyChainManager".

¿Cómo creamos la clase KeyChainManager?

La gestión de Keychain comienza con la creación de una clase llamada KeyChainManager. Esta clase utiliza Foundation, una herramienta que proporciona las clases necesarias para trabajar con Keychains. Lo primero que debes hacer es crear una instancia compartida para acceder a la clase desde cualquier parte de la aplicación.

import Foundation

class KeyChainManager {
    static let shared = KeyChainManager()
    // Aquí se define la clase y los métodos que necesitas
}

¿Cómo almacenamos valores en el Keychain?

Una vez tenemos la instancia compartida, necesitamos crear funciones para guardar, obtener y eliminar datos en el Keychain.

  1. Función para guardar datos: Se necesita una clave y un valor, ambos en formato String. La función devuelve un booleano que indica si la operación fue exitosa.

  2. Conversión a formato UTF-8: El valor que ingresa se debe convertir a este formato para poder ser encriptado y almacenado.

  3. Creación de un diccionario de consulta: Define parámetros como el tipo de dato que se está guardando, en este caso, una contraseña genérica, utilizando kSecClassGenericPassword.

  4. Agregando el valor al Keychain:

    var query: [String: Any] = [kSecClass as String: kSecClassGenericPassword,
                                kSecAttrAccount as String: key,
                                kSecValueData as String: data]
    
  5. Verifica existencia previa: Si ya hay un valor almacenado con la misma clave, es necesario eliminarlo antes de agregar el nuevo.

  6. Guardar el nuevo valor: Usa SecItemAdd para añadir el elemento al Keychain.

¿Cómo se obtienen valores desde el Keychain?

Para recuperar valores, se define un nuevo diccionario de consulta, especificando el tipo de dato y la clave buscada. La función busca devolver el valor en formato String.

var query: [String: Any] = [kSecClass as String: kSecClassGenericPassword,
                            kSecAttrAccount as String: key,
                            kSecReturnData as String: kCFBooleanTrue!,
                            kSecMatchLimit as String: kSecMatchLimitOne]

¿Cómo podemos eliminar valores del Keychain?

La eliminación de un valor es similar a la obtención. Envía los parámetros del diccionario de consulta para identificar cuál es el elemento que se quiere eliminar.

¿Cómo diseñamos la interfaz para usar el Keychain?

El diseño básico interactúa con el usuario para almacenar, listar o eliminar tokens:

  1. Variables de Estado: Se crean variables de estado para manejar el token actual, el token introducido por el usuario y la lista de claves almacenadas.

  2. Interfaz Gráfica:

    • Implementa un TextField donde se ingresa el token.
    • Botones para guardar, listar y eliminar tokens.
  3. Acciones de los Botones:

    • Al guardar, genera una clave única usando UUID.
    • Al listar, recupera todos los tokens y los muestra.
    • Al eliminar, elimina todos los tokens y limpia la lista localmente.

Este tipo de implementación no solo es un ejercicio práctico de programación, sino también un ejemplo de buenas prácticas para gestionar datos sensibles en tus aplicaciones.

Aportes 0

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?