반응형
iOS에서 비행기 모드 감지
전화기가 비행기 모드인지 어떻게 알 수 있습니까? (인터넷에 연결되어 있지 않다는 것을 감지하는 것만으로는 충분하지 않습니다.이 두 가지 경우를 구분할 수 있어야합니다)
SCNetworkReachabilityGetFlags
(SystemConfiguration 프레임 워크)를 사용해보십시오 . 전달 된 flags 변수가 0이고 반환 값이 YES이면 비행기 모드가 켜집니다.
Apple의 Reachability 클래스를 확인하십시오 .
Info.plist에서 true로 설정된 SBUsesNetwork 부울 플래그를 추가하여 비행기 모드에서 메일에 사용되는 팝업을 표시 할 수 있습니다.
탈옥 한 조정 / 앱의 경우 :
@interface SBTelephonyManager : NSObject
+(id)sharedTelephonyManager;
-(BOOL)isInAirplaneMode;
@end
...
bool isInAirplaneMode = [[%c(SBTelephonyManager) sharedTelephonyManager] isInAirplaneMode];
개인 라이브러리를 사용하지 않고는이 정보를 얻을 수 없습니다. 다음은 일부 코드이지만 반송파 신호를 사용할 수없는 경우 작동하지 않습니다.
UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSString *dataNetworkItemView = nil;
for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}
double signalStrength = [[dataNetworkItemView valueForKey:@"signalStrengthRaw"] intValue];
if (signalStrength > 0) {
NSLog(@"Airplane mode or NO signal");
}
else{
NSLog(@"signal available");
}
iOS 12 및 네트워크 프레임 워크 이후로 비행기 모드가 활성 상태인지 감지하는 것이 가능합니다.
import Network
let monitor = NWPathMonitor()
monitor.pathUpdateHandler = { path in
if path.availableInterfaces.count == 0 { print("Flight mode") }
print(path.availableInterfaces)
}
let queue = DispatchQueue.global(qos: .background)
monitor.start(queue: queue)
path.availableInterfaces
배열을 반환합니다. 예를 들면 [en0, pdp_ip0]
. 사용 가능한 인터페이스가 없으면 비행 모드 일 수 있습니다.
경고 비행기 모드와 Wi-Fi가 활성화 된 경우 path.availableInterfaces
다시 돌아 오기 때문에 비어 있지 않습니다.[en0]
참조 URL : https://stackoverflow.com/questions/4804398/detect-airplane-mode-on-ios
반응형
'Development Tip' 카테고리의 다른 글
PostgreSQL에서 dblink를 사용 (설치)하는 방법은 무엇입니까? (0) | 2021.01.05 |
---|---|
PHP는 배열의 마지막 3 개 요소를 가져옵니다. (0) | 2021.01.05 |
CORS 오류를 트랩 할 수 있습니까? (0) | 2020.12.31 |
Android-이미지 파일 크기 줄이기 (0) | 2020.12.31 |
Django ORM을 독립형으로 사용 (0) | 2020.12.31 |