Jak wykryć, czy telefon jest w trybie samolotowym? (Nie wystarczy wykryć, że nie ma połączenia z Internetem, muszę być w stanie odróżnić te 2 przypadki).Wykryj tryb samolotowy na iOS
Odpowiedz
Spróbuj użyć SCNetworkReachabilityGetFlags
(SystemConfiguration framework). Jeśli zwrócona zmienna flagi wynosi 0, a wartość powrotu to TAK, tryb samolotowy jest włączony.
Sprawdź Apple Reachability classes.
Cześć, zwracana wartość jest TAK i otrzymuję zero w obu tych sytuacjach: 1) Wifi jest wyłączone z ustawień i nie ma karty SIM w telefonie 2) w trybie samolotowym. Więc niestety Twoja sugestia nie rozwiązuje mojego problemu. – Caner
to nie jest stan osiągalności taki sam w obu sytuacjach? ok, status bluetooth może być inny. – Felix
Można dodać flagę logiczną SBUsesNetwork do wartości true w pliku Info.plist, aby wyświetlić okno podręczne używane w programie Mail w trybie samolotowym.
Z WYJĄTKIEM, że jest to nieudokumentowane i może pęknąć w przyszłej wersji systemu iOS. –
Nie możemy uzyskać tych informacji bez korzystania z prywatnych bibliotek. Oto kod, ale nie zadziała, gdy sygnał operatora nie będzie dostępny.
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");
}
Dla jailbroken usprawnieniach/apps:
@interface SBTelephonyManager : NSObject
+(id)sharedTelephonyManager;
-(BOOL)isInAirplaneMode;
@end
...
bool isInAirplaneMode = [[%c(SBTelephonyManager) sharedTelephonyManager] isInAirplaneMode];
- 1. Tryb samolotowy w Jelly Beanie
- 2. Programowo programowo przełącza tryb samolotowy
- 3. Jak wywołać powiadomienie "Wyłącz tryb samolotowy"
- 4. Wykryj tryb zgodności IE10
- 5. Wykryj aplikację iOS wchodzącą w tło
- 6. Jak włączyć tryb samolotowy na Androidzie 4.2 i nowszym przy użyciu roota?
- 7. tryb mieszania iOS pomnożyć
- 8. UIImagePickerController na iOS 7: Tryb kwadratowy?
- 9. iOS - tryb wyświetlania IB
- 10. Wykryj Symulator iOS a urządzenie iOS
- 11. Wykryj, czy iOS używa webappa
- 12. Wykryj wklejanie sugestii iOS 8
- 13. iOS UICollectionView wykryj kierunek przewijania
- 14. Tryb tła w tle iOS
- 15. Jak programowo włączyć i wyłączyć tryb Flight na Android 4.2?
- 16. Wykryj, kiedy aplikacja na iOS jest uruchamiana po raz pierwszy?
- 17. Wykryj drgania w Safari na iOS z JavaScriptem?
- 18. Wykryj moją aplikację na iOS jako przeglądarkę internetową
- 19. Wykryj, gdy pasek adresu Chrome na iOS pokazuje
- 20. Wykryj zmiany rotacji w systemie iOS
- 21. W niestandardowej klawiaturze iOS wykryj aplikację
- 22. Wykryj kraj iTunes Store w iOS
- 23. Unity3D na iOS i Android: tryb wieloosobowy (połączenie Bluetooth)
- 24. Jak uzyskać tryb szyfrowania WiFi na iOS/iPhone/iPad?
- 25. iOS - Wykryj przedmuch i sprawdź wyniki! (swift)
- 26. AS3 - tylko tryb pejzażu siłowego iOS?
- 27. Google Maps iOS SDK Tryb nocny
- 28. Wykryj koniec rzucania na ScrollView
- 29. Wykryj dotyk na mapie bitowej
- 30. Wykryj lokalizację dotyku na UIScrollView?
Czy możesz wyjaśnić dlaczego ** ** trzeba odróżnić te dwa przypadki? Jaka jest różnica, jeśli użytkownik nie ma połączenia z powodu zasięgu lub braku połączenia z powodu trybu samolotu? – Jasarien
Gdyż możemy to odróżnić na innych platformach mobilnych i chcielibyśmy mieć tę samą funkcjonalność na różnych platformach, jak to tylko możliwe. W zależności od tego wyświetlamy różne komunikaty o stanie i staramy się pomóc użytkownikowi w rozwiązaniu problemu. – Caner
Wiem, że jest to stare pytanie, ale tylko po to, by wyjaśnić potrzebę tej "wyjątkowo wąskiej sytuacji": kiedy iPhone jest w trybie samolotowym, lokalizacje GPS są wyjątkowo niewiarygodne, ale nie powodują błędów. Subskrybowałem zdarzenia GPS i zostawiłem moją aplikację uruchomioną na 2 godziny. Brak błędów, brak lokalizacji GPS i wszystkie sprawdzenia dotyczące "można odbierać zdarzenia lokalizacji" zwracają TAK. Jednak wyłączenie 3g i wifi ręcznie dało mi NIE dla wewnętrznych czeków "można odebrać lokalizację". Zdecydowanie istnieje potrzeba wyraźnego wykrycia trybu samolotowego w przeciwieństwie do ogólnego sprawdzania osiągalności. – Owen