Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 앱을 첫 번째 실행 시, keychain정보를 삭제하는 방법 본문

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

Comments