O que é KeychainAccess e para que serve?
\n\nKeychainAccess é uma biblioteca leve, porém poderosa, para Swift que fornece uma interface conveniente e type-safe para trabalhar com o Keychain Services (Chaveiro) da Apple. O Keychain é um armazenamento protegido, integrado no iOS, macOS, watchOS e tvOS, projetado para armazenar dados confidenciais: senhas, chaves de criptografia, tokens de autenticação, números de cartão de crédito e qualquer outra informação secreta.
\n\nSem bibliotecas, trabalhar com o Keychain através da interface nativa em C (funções SecItemAdd, SecItemCopyMatching, SecItemUpdate, SecItemDelete) é extremamente complicado, exige a escrita de muito código boilerplate e está sujeito a erros. O KeychainAccess resolve esse problema, oferecendo:
- \n
- Sintaxe Swift simples: trabalho através de propriedades (get/set) e métodos com nomes intuitivos. \n
- Type-safety: os dados são automaticamente convertidos para
String,Dataou tipos personalizados que implementamCodable. \n - Flexibilidade: suporte a diferentes níveis de acesso (disponibilidade do aplicativo, após desbloqueio do dispositivo, com biometria), trabalho com grupos de Keychain e sincronização com iCloud. \n
- Segurança por padrão: a biblioteca utiliza as melhores práticas de segurança estabelecidas pela Apple. \n
A biblioteca é ideal para armazenar tokens OAuth, senhas de usuários, chaves de API, frases-semente de carteiras de criptomoedas e quaisquer outros dados que não podem ser armazenados no UserDefaults ou no sistema de arquivos de forma aberta.
\n\nInstalação do KeychainAccess
\n\nO KeychainAccess não é instalado via pip (Python) ou npm (JavaScript). É uma biblioteca nativa para o ecossistema Apple. As principais formas de instalação são:
\n\n1. Swift Package Manager (SPM) — Método recomendado
\nNo Xcode: File → Add Packages... → insira a URL do repositório:
\nhttps://github.com/kishikawakatsumi/KeychainAccess.git\nSelecione a versão (geralmente "Up to Next Major" com a última estável) e adicione o pacote ao seu target.
\n\nOu adicione a dependência no Package.swift do seu pacote:
// 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\n2. CocoaPods
\nAdicione a linha ao seu Podfile:
pod 'KeychainAccess'\nEm seguida, execute pod install.
3. Carthage
\nAdicione ao Cartfile:
github "kishikawakatsumi/KeychainAccess"\nEm seguida, execute carthage update e adicione o framework ao seu projeto.
Início rápido com KeychainAccess
\n\nApós a instalação, importe a biblioteca: import KeychainAccess
O exemplo mais simples — salvar e ler uma string:
\n\nimport KeychainAccess\n\n// Criamos uma instância para trabalhar com o Keychain do aplicativo\nlet keychain = Keychain(service: "com.example.myapp")\n\n// Salvamos um valor\ntry keychain.set("my_secret_password", key: "user_password")\n\n// Lemos o valor\nif let password = try keychain.get("user_password") {\n print("Senha encontrada: \\(password)")\n} else {\n print("Senha não encontrada")\n}\n\n// Removemos o valor\ntry keychain.remove("user_password")\n\nEste código realiza três operações principais: escrita, leitura e remoção. Observe o tratamento de erros com try — as operações com Keychain podem lançar exceções (por exemplo, em problemas de acesso ou ausência de p
Também na biblioteca
MPAndroidChart para Kotlin: guia completo com exemplos práticos
Configuração de aplicações Node.js: melhores ferramentas e abordagens
Agendador de Tarefas em C# (.NET): Quartz.NET, Hangfire, Coravel
Pimple para PHP: guia completo do container DI
Frameworks CLI para PHP: criando aplicações de console com Symfony Console e Laravel Zero