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
- 애니메이션
- UITextView
- ribs
- RxCocoa
- uitableview
- uiscrollview
- SWIFT
- 클린 코드
- Protocol
- HIG
- rxswift
- UICollectionView
- clean architecture
- 리팩토링
- Refactoring
- combine
- Human interface guide
- Observable
- 리펙터링
- 리펙토링
- swift documentation
- map
- tableView
- collectionview
- 스위프트
- Xcode
- MVVM
- ios
- swiftUI
- Clean Code
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