KeychainAccess para Swift: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es KeychainAccess y para qué sirve?

\n\n

KeychainAccess es una biblioteca ligera pero potente para Swift que proporciona una interfaz cómoda y type-safe para trabajar con Keychain Services (Llavero) de Apple. Keychain es un almacenamiento seguro integrado en iOS, macOS, watchOS y tvOS, diseñado para almacenar datos confidenciales: contraseñas, claves de cifrado, tokens de autenticación, números de tarjetas de crédito y cualquier otra información secreta.

\n\n

Sin bibliotecas, trabajar con Keychain a través de la interfaz nativa en C (funciones SecItemAdd, SecItemCopyMatching, SecItemUpdate, SecItemDelete) es extremadamente engorroso, requiere escribir una gran cantidad de código repetitivo y es propenso a errores. KeychainAccess resuelve este problema ofreciendo:

\n
    \n
  • Sintaxis Swift simple: trabajo mediante propiedades (get/set) y métodos con nombres claros.
  • \n
  • Type-safety: los datos se convierten automáticamente a String, Data o tipos personalizados que implementan Codable.
  • \n
  • Flexibilidad: soporte para diferentes niveles de acceso (disponibilidad de la aplicación, después del desbloqueo del dispositivo, con biometría), trabajo con grupos de Keychain y sincronización con iCloud.
  • \n
  • Seguridad por defecto: la biblioteca utiliza las mejores prácticas de seguridad establecidas por Apple.
  • \n
\n\n

La biblioteca es ideal para almacenar tokens OAuth, contraseñas de usuarios, claves de API, frases semilla de billeteras criptográficas y cualquier otro dato que no deba almacenarse en UserDefaults o en el sistema de archivos en texto plano.

\n\n

Instalación de KeychainAccess

\n\n

KeychainAccess no se instala mediante pip (Python) ni npm (JavaScript). Es una biblioteca nativa para el ecosistema Apple. Los métodos principales de instalación son:

\n\n

1. Swift Package Manager (SPM) — Método recomendado

\n

En Xcode: File → Add Packages... → pegue la URL del repositorio:

\n
https://github.com/kishikawakatsumi/KeychainAccess.git
\n

Seleccione la versión (generalmente "Up to Next Major" con la última estable) y añada el paquete a su target.

\n\n

O añada la dependencia en su Package.swift:

\n
// swift-tools-version:5.7\nimport PackageDescription\n\nlet package = Package(\n    name: "MyPackage",\n    dependencies: [\n        .package(url: "https://github.com/kishikawakatsumi/KeychainAccess.git", from: "4.2.2")\n    ],\n    targets: [\n        .target(\n            name: "MyPackage",\n            dependencies: ["KeychainAccess"]),\n    ]\n)
\n\n

2. CocoaPods

\n

Añada la línea a su Podfile:

\n
pod 'KeychainAccess'
\n

Luego ejecute pod install.

\n\n

3. Carthage

\n

Añada al Cartfile:

\n
github "kishikawakatsumi/KeychainAccess"
\n

Luego ejecute carthage update y añada el framework a su proyecto.

\n\n

Inicio rápido con KeychainAccess

\n\n

Después de la instalación, importe la biblioteca: import KeychainAccess

\n\n

El ejemplo más simple: guardar y leer una cadena de texto:

\n\n
import KeychainAccess\n\n// Creamos una instancia para trabajar con el Keychain de la aplicación\nlet keychain = Keychain(service: "com.example.myapp")\n\n// Guardamos un valor\ntry keychain.set("my_secret_password", key: "user_password")\n\n// Leemos el valor\nif let password = try keychain.get("user_password") {\n    print("Contraseña encontrada: \\(password)")\n} else {\n    print("Contraseña no encontrada")\n}\n\n// Eliminamos el valor\ntry keychain.remove("user_password")
\n\n

Este código realiza tres operaciones básicas: escritura, lectura y eliminación. Observe el manejo de errores mediante try — las operaciones con Keychain pueden lanzar excepciones (por ejemplo, ante problemas de acceso o ausencia de p

Recommendations