Czy istnieje sposób sprawdzenia, czy połączenie internetowe jest dostępne za pomocą Swift?
Wiem, że jest wiele bibliotek zewnętrznych, które to robią, ale wszystkie są napisane w Objective-C. Szukam szybkiej alternatywy.
ios
swift
network-connection
Isuru
źródło
źródło
Odpowiedzi:
Jak wspomniano w komentarzach, chociaż możliwe jest użycie bibliotek Objective-C w Swift, chciałem bardziej czystego rozwiązania Swift. Istniejąca klasa Apple Reachability i inne biblioteki innych firm wydawały mi się zbyt skomplikowane, abym przetłumaczył ją na Swift. Poszukałem więcej w Google i natknąłem się na ten artykuł, który pokazuje prostą metodę sprawdzania dostępności sieci. Postanowiłem przetłumaczyć to na Swift. Uderzyłem w wiele przeszkód, ale dzięki Martinowi R ze StackOverflow udało mi się je rozwiązać i wreszcie uzyskać działające rozwiązanie w Swift. Oto kod.
Dla Swift> 3.0
Działa to zarówno w przypadku połączeń 3G, jak i Wi-Fi. Wrzuciłem go również na mój GitHub z działającym przykładem.
źródło
isConnectedToNetwork
zwraca prawdę, ale nie mogę zadzwonić do mojej usługi internetowejDam ci lepszy sposób ...
Musisz utworzyć klasę z tym kodem
Następnie możesz sprawdzić połączenie internetowe w dowolnym miejscu projektu za pomocą tego kodu:
Bardzo łatwe!
* Ten sposób jest oparty na odpowiedzi Vikram Pote!
źródło
Dla Swift 3.1 (iOS 10.1)
Jeśli chcesz dokonać rozróżnienia między typem sieci (np. Wi-Fi lub WWAN):
Możesz użyć:
Oto cała klasa osiągalności, która rozróżnia typy sieci:
źródło
Ponieważ sendSynchronousRequest jest przestarzałe, próbowałem tego, ale przed zakończeniem odpowiedzi został wywołany komunikat „Return Status”.
Ta odpowiedź działa jednak dobrze: Sprawdź połączenie internetowe za pomocą Swift
Oto, czego mimo wszystko próbowałem:
źródło
SWIFT 3: Sprawdza połączenie Wi - Fi i Internet :
STOSOWANIE:
źródło
public func isConnectedToNetwork() {...}
należy zmienić naclass func isConnectedToNetwork{...}
dla swojego przypadku użycia.Możesz również użyć poniższej odpowiedzi.
źródło
SWIFT 3: Sprawdź połączenie 3G i Wi-Fi
źródło
Dla Swift 5:
źródło
Szybki 4
źródło