Как определить, находится ли телефон в самолете? (Этого недостаточно, чтобы обнаружить, что нет подключения к Интернету, я должен уметь отличать эти 2 случая)
Обнаружение режима полета на iOS
Ответ 1
Попробуйте использовать SCNetworkReachabilityGetFlags
(Framework SystemConfiguration). Если возвращаемая переменная флагов равна 0, а возвращаемое значение равно YES, режим полета включается.
Отъезд Apple Допустимые классы.
Ответ 2
Вы можете добавить флаг буфера SBUsesNetwork, установленный в true в вашем Info.plist, чтобы отобразить всплывающее окно, используемое в Mail, когда он находится в режиме полета.
Ответ 3
Мы не можем получить эту информацию, не используя частные библиотеки. Вот какой-то код, но он не будет работать, если сигнал несущей недоступен.
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");
}
Ответ 4
Для jailbroken tweaks/apps:
@interface SBTelephonyManager : NSObject
+(id)sharedTelephonyManager;
-(BOOL)isInAirplaneMode;
@end
...
bool isInAirplaneMode = [[%c(SBTelephonyManager) sharedTelephonyManager] isInAirplaneMode];