KeychainAccess para Swift: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é KeychainAccess e para que serve?

\n\n

KeychainAccess é 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\n

Sem 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
    \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, Data ou tipos personalizados que implementam Codable.
  • \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
\n\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\n

Instalação do KeychainAccess

\n\n

O 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\n

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

\n

No Xcode: File → Add Packages... → insira a URL do repositório:

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

Selecione a versão (geralmente "Up to Next Major" com a última estável) e adicione o pacote ao seu target.

\n\n

Ou adicione a dependência no Package.swift do seu pacote:

\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

Adicione a linha ao seu Podfile:

\n
pod 'KeychainAccess'
\n

Em seguida, execute pod install.

\n\n

3. Carthage

\n

Adicione ao Cartfile:

\n
github "kishikawakatsumi/KeychainAccess"
\n

Em seguida, execute carthage update e adicione o framework ao seu projeto.

\n\n

Início rápido com KeychainAccess

\n\n

Após a instalação, importe a biblioteca: import KeychainAccess

\n\n

O exemplo mais simples — salvar e ler uma string:

\n\n
import 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\n

Este 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

Recommendations