반응형
디바이스에 USIM이 있는지, 통신사 등 확인하는 방법
CTTelephonyNetworkInfo를 사용하여 providers를 조회하여 USIM 유무를 확인한다.
mobileNetworkCode와 mobileCountryCode를 확인하여 유심이 있는지 확인한다.
테스트한 결과, 6s는 providers가 1개, 아이폰 13 mini, Xr, 11 pro max는 providers가 2개 조회된다.
아마도 USIM, eSIM을 지원하는 디바이스에서는 Providers가 2개 조회되는 듯하다.
USIM 1개만 존재하는 경우, 모든 providers를 조회하여 mobileNetworkCode가 있는 경우를 USIM이 있는 경우로 판단한다.
- Swift
import CoreTelephony
let networkInfo = CTTelephonyNetworkInfo()
let providers = networkInfo.serviceSubscriberCellularProviders
if let providers = providers {
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 있음")
}
}
}
- Objective-c
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
NSDictionary<NSString *, CTCarrier *> *providers = [networkInfo serviceSubscriberCellularProviders];
if (providers != nil) {
for (NSString *key in [providers allKeys]) {
CTCarrier *carrier = [providers valueForKey:key];
NSLog(@"key : %@ / value : %@", key, carrier);
NSString *mnc = carrier.mobileNetworkCode;
NSString *mcc = carrier.mobileCountryCode;
NSLog(@"mnc : %@", mnc);
if (mnc == nil) {
NSLog(@"USIM 없음");
} else {
NSLog(@"USIM 있음");
}
}
}
- 결과
유심이 있는 경우, CTCarrier가 아래처럼 Country code, network code가 조회된다.
Carrier name: [SK Telecom]
Mobile Country Code: [450]
Mobile Network Code:[05]
ISO Country Code:[kr]
Allows VOIP? [YES]
유심이 없는 경우, CTCarrier 조회 시 아래와 같이 nil로 조회된다.
Carrier name: [<nil>]
Mobile Country Code: [<nil>]
Mobile Network Code:[<nil>]
ISO Country Code:[<nil>]
Allows VOIP? [YES]
반응형
'iOS > Swift + Objective-c' 카테고리의 다른 글
[Swift] 날짜 다루기, 오늘 날짜 조회, 시간 계산 (Date, Calendar, DateComponents) (0) | 2023.04.08 |
---|---|
[Swift] UITableView cell 선택하기 (프로그래밍 방식) (0) | 2023.03.08 |
[Swift] 키체인 설명 및 사용 방법 (Keychain) (1) | 2022.09.28 |
[Swift] UITabBarController 이미지 설정 (0) | 2022.08.29 |
[Swift] FileManager로 디바이스에 파일 저장하기 (Document) (0) | 2022.08.04 |