Wiem, że to pytanie będzie się wydawało naiwne dla wielu innych, jednak nie sądzę, aby prosty przypadek został tutaj dobrze wyjaśniony. Pochodzące z tła systemu Android i BlackBerry, wysyłanie żądań za pośrednictwem sieci HTTPUrlConnection
natychmiast kończy się niepowodzeniem, jeśli nie ma dostępnego połączenia. Wydaje się, że jest to całkowicie rozsądne zachowanie i byłem zaskoczony, że NSURLConnection
system iOS go nie naśladował.
Rozumiem, że firma Apple (i inne osoby, które ją rozszerzyły) udostępnia Reachability
klasę pomocną w określaniu stanu sieci. Byłem szczęśliwy, widząc to jako pierwszy, iw pełni oczekiwałem, że zobaczę coś takiego bool isNetworkAvailable()
, ale zamiast tego, ku mojemu zdziwieniu, znalazłem złożony system wymagający rejestracji powiadomień i oddzwonień, a także kilka pozornie niepotrzebnych szczegółów. Musi być lepszy sposób.
Moja aplikacja już z wdziękiem obsługuje awarie połączenia, w tym brak łączności. Użytkownik jest powiadamiany o awarii, a aplikacja przechodzi dalej.
Dlatego moje wymagania są proste: pojedyncza, synchroniczna funkcja, którą mogę wywołać przed wszystkimi żądaniami HTTP, aby określić, czy powinienem zawracać sobie głowę wysłaniem żądania, czy nie. W idealnym przypadku nie wymaga konfiguracji i po prostu zwraca wartość logiczną.
Czy to naprawdę nie jest możliwe na iOS?