Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- SWIFT
- ios
- Human interface guide
- uiscrollview
- map
- HIG
- 스위프트
- combine
- rxswift
- 리팩토링
- UITextView
- Observable
- Protocol
- RxCocoa
- 애니메이션
- swiftUI
- 리펙터링
- Clean Code
- 클린 코드
- Xcode
- UICollectionView
- MVVM
- 리펙토링
- uitableview
- tableView
- swift documentation
- Refactoring
- ribs
- clean architecture
- collectionview
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 앱을 첫 번째 실행 시, keychain정보를 삭제하는 방법 본문
* 기본 세팅: 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
'iOS 응용 (swift)' 카테고리의 다른 글
Comments