Détecter le mode avion sur iOS

Comment puis-je détecter si le téléphone est en mode avion? (Il ne suffit pas de détecter qu’il n’y a pas de connexion internet, je dois pouvoir distinguer ces 2 cas)

Essayez d’utiliser SCNetworkReachabilityGetFlags (framework SystemConfiguration). Si la variable indicateur remise est 0 et que la valeur renvoyée est OUI, le mode avion est activé.

Découvrez les classes d’accessibilité d’Apple.

Vous pouvez append l’indicateur booléen SBUsesNetwork défini à true dans votre Info.plist pour afficher la fenêtre contextuelle utilisée dans Mail en mode Avion.

Nous ne pouvons pas obtenir cette information sans utiliser les bibliothèques privées. Voici un code mais cela ne fonctionnera pas si le signal de la porteuse n’est pas disponible.

 UIApplication *app = [UIApplication sharedApplication]; NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews]; NSSsortingng *dataNetworkItemView = nil; for (id subview in subviews) { if([subview isKindOfClass:[NSClassFromSsortingng(@"UIStatusBarSignalStrengthItemView") class]]) { dataNetworkItemView = subview; break; } } double signalStrength = [[dataNetworkItemView valueForKey:@"signalStrengthRaw"] intValue]; if (signalStrength > 0) { NSLog(@"Airplane mode or NO signal"); } else{ NSLog(@"signal available"); } 

Pour des tweaks / apps jailbreakés:

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