iOS 응용 (swift)
[iOS - swift] 앱을 첫 번째 실행 시, keychain정보를 삭제하는 방법
jake-kim
2020. 12. 17. 00:09
* 기본 세팅: KeychainAccess 프레임워크, 프로젝트 구성
* 앱 첫 실행 시 정보를 삭제하는 원리: UserDefaults에 플래그 값을 넣어, 앱이 삭제되면 플래그값도 사라지는 것을 이용
UserDefaults에 첫 번째 실행하는 것인지 체크하는 부분 추가
- Domain/CommonExtension/UserDefsults추가: 기존에 flag값이 존재하면 이전에 실행했던 것이고, flag값이 존재하지 않으면 첫번째 실행이라 판단
UserDefaults는 앱을 지우면 같이 지워지므로 확인 (keychain은 앱을 지워도 지워지지 않음)
//
// UserDefaults.swift
// Domain
//
// Created by 김종권 on 2020/12/16.
//
import Foundation
extension UserDefaults {
public static func isFirstLaunch() -> Bool {
let hasBeenLaunchedBeforeFlag = "hasBeenLaunchedBeforeFlag"
let isFirstLaunch = !UserDefaults.standard.bool(forKey: hasBeenLaunchedBeforeFlag)
if isFirstLaunch {
UserDefaults.standard.set(true, forKey: hasBeenLaunchedBeforeFlag)
UserDefaults.standard.synchronize()
}
return isFirstLaunch
}
}
- AppDelegate에 적용
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
removeKeychainAtFirstLaunch()
return true
}
private func removeKeychainAtFirstLaunch() {
guard UserDefaults.isFirstLaunch() else {
return
}
keychain.deleteUserInfo()
}
* 전체 소스코드: github.com/JK0369/keychainSample