투케이2K

517. (ios/swift5) [유틸 파일] getMobileLock : 모바일 잠금 상태 여부 확인 - LocalAuthentication 본문

IOS

517. (ios/swift5) [유틸 파일] getMobileLock : 모바일 잠금 상태 여부 확인 - LocalAuthentication

투케이2K 2024. 4. 20. 12:01

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [모바일 잠금 화면 설정 여부 확인]
    // -----------------------------------------------------------------------------------------
    var getMobileLockFlag = false
    func getMobileLock() -> Bool {
        
        /*
        // -----------------------------------------
        // [getMobileLock 메소드 설명]
        // -----------------------------------------
        1. 필요 import : import LocalAuthentication
        // -----------------------------------------
        2. 호출 방법 : if C_StateCheck().getMobileLock() == true {} else {}
        // -----------------------------------------
        */
        
        
        // [변수 값 초기화]
        self.getMobileLockFlag = false
        
        
        // [세마포어 선언 : 프로그램 로직을 동기화 구현 : value 0 값은 대기 상태 선언]
        let semaphore = DispatchSemaphore(value: 0)
        
        var error: NSError?
        guard LAContext().canEvaluatePolicy(.deviceOwnerAuthentication, error: &error) else {
            
            // [에러 체크 문제 발생]
            guard let error = error
            else {
                S_Log._D_(description: "모바일 잠금 상태 여부 확인 [에러] 발생 [1]", data: [error?.localizedDescription ?? ""])
                
                // [생체 인증 사용 가능 여부 에러 결과 반환]
                self.getMobileLockFlag = false
                
                // [세마포어 신호 알림]
                semaphore.signal()
                
                // [리턴 데이터 반환]
                return self.getMobileLockFlag
            }
            
            S_Log._D_(description: "모바일 잠금 상태 여부 확인 [에러] 발생 [2]", data: [error.localizedDescription])
            
            // [생체 인증 사용 가능 여부 에러 결과 반환]
            self.getMobileLockFlag = false
            
            // [세마포어 신호 알림]
            semaphore.signal()
            
            // [리턴 데이터 반환]
            return self.getMobileLockFlag
        }
        
        
        // MARK: [evaluate 사용 가능]
        self.getMobileLockFlag = true
        
        
        // [세마포어 신호 알림]
        semaphore.signal()

        
        // [세마포어 확인 대기]
        semaphore.wait()

        
        // [로그 출력]
        S_Log._D_(description: "모바일 잠금 상태 여부 확인", data: [
            "RETURN :: \(self.getMobileLockFlag)"
        ])

        
        // [결과 리턴 수행 실시]
        return self.getMobileLockFlag
        
    }
 

[결과 출력]


반응형
Comments