Detectar modo de avião no iOS

Como posso detectar se o telefone está no modo avião? (Não é o suficiente para detectar que não há conexão com a internet, eu tenho que ser capaz de distinguir esses dois casos)

Tente usar SCNetworkReachabilityGetFlags (estrutura SystemConfiguration). Se a variável de sinalizadores devolvida for 0 e o valor de retorno for SIM, o modo de avião será ativado.

Confira as classs de acessibilidade da Apple.

Você pode adicionar o sinalizador booleano SBUsesNetwork definido como true em seu Info.plist para exibir o pop-up usado no Mail quando estiver no modo avião.

Não podemos obter essa informação sem usar bibliotecas particulares. Aqui está algum código, mas não funcionará quando o sinal da operadora não estiver disponível.

 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"); } 

Para ajustes / aplicativos com jailbreak:

 @interface SBTelephonyManager : NSObject +(id)sharedTelephonyManager; -(BOOL)isInAirplaneMode; @end ... bool isInAirplaneMode = [[%c(SBTelephonyManager) sharedTelephonyManager] isInAirplaneMode];