2009-10-26 32 views
11

moja aplikacja ma dostęp do internetu i po prostu chcę, aby wykryć, czy istnieje połączenie za pośrednictwem WiFi lub poprzez sieć danych przewoźnika lub nieiPhone SDK wykryć WiFi i operatora sieci

jabłko dokonał tego przykładem „osiągalności”

https://developer.apple.com/iphone/library/samplecode/Reachability/

myślę, że po prostu wykrywa wifi a nie sieć nośną

ktoś może mi powiedzieć, co jest najlepsze do zrobienia, aby wykryć, czy istnieje jakiś związek (dowolny rodzaj połączenia)

Doceń pomoc!

+1

To jest trochę stare. Dostępna jest nowsza wersja Dostępu Tony'ego Millera, którą użyłem [tutaj] (https://github.com/tonymillion/Reachability) –

Odpowiedz

13

Ta próbka jest dokładnie tym, czego potrzebujesz.

Spójrz na dostępność.m. powie ci, czy masz jakieś połączenie, a następnie powiesz, jakie masz połączenie.

+1

Aby lepiej odpowiedzieć na twoje pytanie: kod zasięgu wykrywa * dowolny * rodzaj połączenia , nie tylko WiFi. Wszystko, co musisz zrobić, to zaimportować klasy zasięgu do projektu, a następnie utworzyć obiekt zasięgu i przejść z tego miejsca. – Tim

9

Przykład zasięgu może być przesadny, jeśli chcesz wykryć, czy jesteś podłączony i jakiego rodzaju połączenia używasz, gdy jesteś podłączony. Rzeczywiście przykład zawiera również kod pokazujący, jak skonfigurować i używać wywołań zwrotnych, które powiadamiają Cię o zmianach stanu.

Aby uzyskać fragment kodu źródłowego informujący o dokładnym połączeniu i rodzaju połączenia, możesz rzucić okiem na moją odpowiedź na podobne pytanie, opublikowane here.

3

Po wysłaniu żądania do dowolnego zasobu internetowego, telefon iPhone wykorzystuje każde znalezione połączenie, korzysta z Wi-Fi (jako wyższego priorytetu), a jeśli sieć Wi-Fi nie jest połączona, korzysta z sieci operatora. Nie ma ustawień kodu, które uniemożliwiają połączenie z siecią operatora.

Wszystko co musisz zrobić:

  • sprawdzić sygnał w miejscu testowym.
  • Sprawdź link, do którego próbujesz dotrzeć na safari, aby upewnić się, że nie jest to Twoja aplikacja, która ma problem.
  • skontaktować się z nośnego jeśli link nie działa na safari (na pewno za pomocą sieci operatora)
+0

ta odpowiedź jest dla iampathik –

2

Techniki te są przydatne, ale należy pamiętać, że ścieżka urządzenia do Internetu może składać się z kilku różnych rodzaje połączeń. Na przykład telefon iPhone lub odtwarzacz iPod touch może wykorzystywać Wi-Fi do łączenia się z mobilnym hotspotem, który z kolei ma własne połączenie bezprzewodowe 3G. Dlatego nie można bezpiecznie założyć, że obecność połączenia Wi-Fi oznacza wyższą przepustowość niż 3G.

0

Zasięg (zarówno przykładowy kod firmy Apple, jak i podobny kod innych osób, a także podstawowa usługa SCNetworkReachability informują, że nie ma dostępu do Internetu, lub że uzyska się dostęp do Internetu przez WiFi lub że dostęp do Internetu Dane mobilne:

Jeśli masz dostępne zarówno dane Wi-Fi, jak i komórkowe, pokaże Ci "Wi-Fi" Nie ma możliwości sprawdzenia, czy dane komórkowe są dostępne, gdy masz WiFi. (Możesz łatwo stwierdzić, że telefon komórkowy dane są dostępne, gdy nie ma WiFi) Nie można sprawdzić, czy tryb samolotowy jest włączony (co różni się od WiFi i danych mobilnych wyłączonych).

Dostępna sieć Wi-Fi nie gwarantuje, że podczas pobierania będą używane WiFi, a nie dane mobilne. Możesz zacząć pobieranie w domu, zostaw minutę później, WiFi zniknie, a iOS z przyjemnością będzie kontynuował pobieranie przez 3G. Możesz ustawić flagę w wywołaniu pobierania, aby uniemożliwić 3G. Kod błędu będzie wynosił -1009 = Brak dostępu do Internetu, nie wspominając, że 3G byłaby dostępna.

Korzystając z CTTelephonyNetworkInfo, możesz dowiedzieć się, że jesteś na urządzeniu, które może mieć dane mobilne (nie iPod Touch lub iPad bez danych mobilnych i karta SIM jest w urządzeniu).