clerk-swift은(는) 무엇을 하나요?
네이티브 Swift 및 iOS 앱에 Clerk 인증을 구현합니다. ClerkKit 및 ClerkKitUI의 소스 기반 패턴을 사용하여 미리 빌드된 AuthView 또는 커스텀 네이티브 흐름을 지원합니다. Expo나 React Native 프로젝트에는 사용하지 마세요.
개요
이 스킬은 네이티브 Swift 및 iOS 애플리케이션에서 Clerk 인증을 설정하기 위한 가이드를 제공합니다. 다음을 포함합니다:
- ClerkKit을 사용한 기본 인증 구성
- ClerkKitUI를 사용한 미리 빌드된 인증 UI 통합
- 완전히 커스텀한 네이티브 인증 흐름 구현
- 인증 상태 관리 및 라우팅
전제 조건
- Swift 5.7+
- iOS 15+
- Xcode 14+
- Swift Package Manager
- Clerk 계정 및 프론트엔드 API 키
설치
Package.swift에 ClerkKit 및 ClerkKitUI를 추가하거나 Xcode를 통해 추가합니다.
// Package.swift
dependencies: [
.package(url: "https://github.com/clerkinc/clerk-swift.git", from: "2.0.0")
]
Xcode의 경우: 파일 > 패키지 추가... 로 이동하여 저장소 URL을 입력합니다.
사용 방법
1. 인증 구성
Clerk.shared 인스턴스를 앱 시작 시 구성합니다.
import ClerkKit
@main
struct MyApp: App {
init() {
Clerk.shared.configure(with: "your_frontend_api_key")
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
2. 미리 빌드된 인증 UI (ClerkKitUI)
가장 빠른 방법은 AuthView를 사용하는 것입니다.
import SwiftUI
import ClerkKitUI
struct ContentView: View {
var body: some View {
AuthView()
}
}
3. 커스텀 인증 흐름
더 많은 제어가 필요하면 ClerkKit의 저수준 API를 사용합니다.
import ClerkKit
class AuthenticationViewModel: ObservableObject {
@Published var isAuthenticated = false
func signIn(email: String, password: String) async {
do {
let user = try await Clerk.shared.signIn(email: email, password: password)
isAuthenticated = true
} catch {
// 에러 처리
}
}
}
주요 구성 요소
| 구성 요소 | 설명 |
|---|---|
Clerk | 전역 인증 관리자 |
AuthView | 미리 빌드된 인증 UI (ClerkKitUI) |
ClerkClient | 저수준 API 클라이언트 |
User | 인증된 사용자 객체 |
중요한 고려 사항
- Expo 또는 React Native 프로젝트에는 절대 사용하지 마십시오. 대신
clerk/expo또는clerk/react-native스킬을 사용하세요. - 앱이 백그라운드에 있을 때 인증 세션을 유지하려면
keychain저장소를 활성화하세요. - 사용자 정의 UI의 경우 ClerkKit의
AuthenticationDelegate프로토콜을 구현하세요.
문제 해결
- "Invalid frontend API key":
configure에 전달된 API 키가 올바른지 확인하세요. - 로그인/회원가입 화면이 나타나지 않음:
AuthView가 앱의 루트 뷰 계층에 올바르게 배치되었는지 확인하세요. - 네트워크 오류: 앱이 인터넷에 연결되어 있고 Apple의 앱 전송 보안 정책이 올바르게 설정되었는지 확인하세요.
추가 문서
더 자세한 정보는 공식 Clerk Swift 문서를 참조하세요.