Как определить, находится ли телефон в режиме полета - программно?

Я просто хочу программно узнать, находится ли iPhone в режиме полета. Я знаю, что мы должны добавить логический флаг SBUsesNetwork в информационный лист, но эта доза не служит моей цели. На самом деле я использую класс reachabillity для определения доступности Интернета, поэтому, когда мое приложение при запуске в режиме полета выдает два предупреждения, одно из моего кода, а другое - из флага SBUsesNetwork. Я просто хочу отобразить одно из этих двух предупреждений. Поэтому я хочу, чтобы программно узнать, находится ли телефон в режиме полета?

Любая идея или предложения будут иметь большую помощь?

Заранее спасибо!!

4 ответа

Решение

Может быть это

помогает

Уже было опубликовано о здесь. Может быть, это поможет.

Определить режим полета на iOS

Мы не можем получить эту информацию без использования частных библиотек. Вот некоторый код, но он не будет работать, когда сигнал несущей недоступен.

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");
  }
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
[infoDict objectForKey:@"SBUsesNetwork"];

Надеюсь это поможет.

Другие вопросы по тегам