Notice
Recent Posts
Recent Comments
Link
투케이2K
380. (ios/swift5) CTTelephonyNetworkInfo CellularProviders 사용해 휴대폰 유심 Usim 장착 상태 확인 본문
IOS
380. (ios/swift5) CTTelephonyNetworkInfo CellularProviders 사용해 휴대폰 유심 Usim 장착 상태 확인
투케이2K 2023. 11. 12. 17:40[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// -----------------------------------------------------------------------------------------
// MARK: - [유심 장착 여부 상태 확인 메소드]
// -----------------------------------------------------------------------------------------
var checkUsimMountiongFlag = false
func getUsimMounting() -> Bool {
/*
// -----------------------------------------
// [getWhatOfNetwork 메소드 설명]
// -----------------------------------------
1. 필요 import : import CoreTelephony
// -----------------------------------------
2. 호출 방법 : if C_StateCheck().getUsimMounting() == true {} else {}
// -----------------------------------------
3. 참고 :
providers를 조회하여 mobileNetworkCode가 있는 경우를 USIM이 있는 경우로 판단
// -----------------------------------------
*/
// [변수 선언]
var M_LOG = ""
// [세마포어 선언 : 프로그램 로직을 동기화 구현 : value 0 값은 대기 상태 선언]
let semaphore = DispatchSemaphore(value: 0)
let networkInfo = CTTelephonyNetworkInfo()
let providers = networkInfo.serviceSubscriberCellularProviders
if let providers = providers {
M_LOG = "[ERROR] :: Usim Search Fail"
self.checkUsimMountiongFlag = false
for key in providers.keys {
let carrier = providers[key]
//print("key : \(key) / value : \(carrier)")
let mnc = carrier?.mobileNetworkCode
let mcc = carrier?.mobileCountryCode
//print("mnc : \(mnc)")
if carrier?.mobileNetworkCode == nil {
//print("USIM 없음")
} else {
//print("USIM 있음")
// [변수 값 삽입]
M_LOG = "[Success] :: Usim Mounting Device :: \(String(describing: carrier?.description ?? ""))"
self.checkUsimMountiongFlag = true
break
}
}
// [세마포어 신호 알림]
semaphore.signal()
}
else {
// [변수 값 삽입]
M_LOG = "[ERROR] :: providers is nil"
self.checkUsimMountiongFlag = false
// [세마포어 신호 알림]
semaphore.signal()
}
// [세마포어 확인 대기]
semaphore.wait()
// [로그 출력]
S_Log._D_(description: "유심 장착 여부 상태 확인", data: [
"M_LOG :: \(M_LOG)",
"RETURN :: \(self.checkUsimMountiongFlag)"
])
// [결과 리턴 수행 실시]
return self.checkUsimMountiongFlag
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments