Подтвердить что ты не робот

Обнаружение режима полета на iOS

Как определить, находится ли телефон в самолете? (Этого недостаточно, чтобы обнаружить, что нет подключения к Интернету, я должен уметь отличать эти 2 случая)

4b9b3361

Ответ 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];