Come posso rilevare se il telefono è in modalità aereo? (Non è sufficiente rilevare che non vi è alcuna connessione Internet, devo essere in grado di distinguere questi 2 casi)Rileva modalità aereo su iOS
risposta
Provare a utilizzare SCNetworkReachabilityGetFlags
(framework SystemConfiguration). Se la variabile flags restituita è 0 e il valore restituito è YES, la modalità aereo è attivata.
Scopri Apple Reachability classes.
Salve, il valore restituito è SÌ e ottengo zero in entrambe le situazioni: 1) Wifi è disabilitato dalle impostazioni e non c'è nessuna scheda SIM nel telefono 2) modalità aereo. Quindi sfortunatamente il tuo suggerimento non risolve il mio problema. – Caner
non è lo stato di raggiungibilità uguale in entrambe le situazioni? ok, lo stato del bluetooth potrebbe essere diverso. – Felix
È possibile aggiungere il flag booleano SBUsesNetwork impostato su true in Info.plist per visualizzare il popup utilizzato in Mail in modalità aereo.
TRANNE che questo non è documentato e potrebbe rompersi in una versione futura di iOS. –
Non possiamo ottenere queste informazioni senza utilizzare librerie private. Ecco un codice ma non funzionerà quando il segnale portante non è disponibile.
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");
}
Per tweaks jailbroken/apps:
@interface SBTelephonyManager : NSObject
+(id)sharedTelephonyManager;
-(BOOL)isInAirplaneMode;
@end
...
bool isInAirplaneMode = [[%c(SBTelephonyManager) sharedTelephonyManager] isInAirplaneMode];
- 1. Come rilevare Modalità aereo/Modalità volo in IOS Swift
- 2. Modalità aereo in Jelly Bean
- 3. CGFontCreateWithDataProvider si blocca in modalità aereo
- 4. Come richiamare la notifica "Disabilita modalità aereo"
- 5. Test in modalità "Aereo" nell'emulatore Android
- 6. Simula la modalità aereo in iPhone Simulator
- 7. Rileva modalità test django
- 8. Usa ADB per controllare se la modalità aereo è attivata?
- 9. Rileva se la modalità di spostamento notturno è attiva su iOS
- 10. Raggiungibile su iOS 8 in ritardo?
- 11. Abilita la modalità aereo su tutti i livelli API a livello di programmazione Android
- 12. UIImagePickerController su iOS 7: modalità quadrata?
- 13. Rileva modifiche su NSUserDefaults
- 14. Rileva l'app iOS inserendo lo sfondo
- 15. Rileva dispositivi audio collegati iOS
- 16. Modalità sfondo iOS
- 17. API iOS rileva reti wireless
- 18. ios UICollectionView rileva direzione scorrimento
- 19. iOS rileva il movimento dell'utente
- 20. Modalità sfondo Bluetooth iOS
- 21. iOS - Modalità visualizzazione IB
- 22. Rileva quale versione di un'app è installata su iOS?
- 23. Rileva tocchi utente su MKMapView in iOS 5
- 24. Rileva le chiamate telefoniche su iOS con CTCallCenter (Swift)
- 25. jQuery Rileva fine di pagina su Safari Mobile/iOS
- 26. C'è un modo per controllare in modo programmato lo stato della modalità aereo?
- 27. Riproduci suono su iOS 9 in modalità silenziosa
- 28. Rileva paese di iTunes Store in iOS
- 29. Rileva impostazione ora 24 ore su iPhone
- 30. Visualizzazione della modalità online e offline (ad esempio aereo) in un'app Ember.js
Vuoi spiegarci il motivo ** ** è necessario distinguere questi due casi? Che differenza fa se l'utente non ha una connessione a causa della copertura o della mancanza di connessione a causa della modalità aereo? – Jasarien
Possiamo distinguerlo su altre piattaforme mobili e vorremmo avere la stessa funzionalità su tutte le piattaforme il più possibile. A seconda di ciò, mostriamo messaggi di stato diversi e cerchiamo di guidare l'utente a correggere il problema. – Caner
So che questa è una vecchia domanda, ma solo per chiarire la necessità di questa "situazione straordinariamente stretta": quando un iPhone è in modalità aereo, le posizioni GPS sono estremamente inaffidabili, ma non causano errori. Mi sono iscritto agli eventi GPS e ho lasciato la mia app in esecuzione per 2 ore. Nessun errore, nessuna posizione GPS e tutti i controlli per "può ricevere gli eventi di localizzazione" restituire SI. Tuttavia, disabilitando 3g e wifi manualmente mi ha dato NO per i controlli interni "può ricevere la posizione". È assolutamente necessario rilevare la modalità aereo in modo esplicito rispetto a un controllo generale della raggiungibilità. – Owen