Beste Vorgehensweise zum Überprüfen der Internetverbindung in iOS

8

Ich habe im Internet nach dem besten Weg gesucht, um nach einer Internetverbindung in iOS zu suchen, die sowohl in der IPv4- als auch in der IPv6-Netzwerkumgebung funktioniert. Ich fand, dass es viele mögliche Antworten gibt, aber sehr verwirrt, auf welche man sich bezieht. Was ich tun muss, ist Folgendes:

%Vor%

Ich habe die folgenden Optionen gefunden, die im Internet vorgeschlagen werden.

OPTION 1: Verwenden Sie die Apple-Erreichbarkeitsklasse

Mit Erreichbarkeit kann ich die Internetkonnektivität wie folgt überprüfen, die kurz und direkt ist und nicht auf eine Antwort warten muss.

%Vor%

Aber hier wird das Internet-Checking vor dem Flug durchgeführt, was gegen den Vorschlag von Apple Engineers ist, wie auf WWDC zu sehen ist Video . Auch wenn Sie ReadMe.md überprüfen, wurde erwähnt, dass Erreichbarkeit IPv6 vollständig unterstützt. Wenn jedoch die Methode reachabilityForInternetConnection in Reachability.m aktiviert ist, haben sie sockaddr_in verwendet, sockaddr_in6 wurde nicht verwendet, was für das IPv6-Netzwerk empfohlen wird. Also ich weiß nicht, ob es in IPv6-Netzwerk funktioniert.

OPTION 2: Verwenden Sie Alamofire zum Verbinden

  • Versuchen Sie einfach, eine Verbindung herzustellen, wie in einer Stackoverflow-Antwort . Der Code auch unten gezeigt: -

    %Vor%

Aber es ist nicht zeitaufwendig, zu versuchen, sich mit einem Host zu verbinden, auf die Antwort zu warten und dann zu wissen, ob online / offline.

OPTION 3: Verwenden Sie Tony Million's Version von Erreichbarkeit . Aber der Autor hat davor gewarnt, dass die App abgelehnt wird, während sie dies tut. Ich kann dies als Code unten verwenden: -

%Vor%

Aber in dieser Option ist meine Frage, ist dies der richtige Ansatz, um das Internet zu testen, indem Sie Ссылка verbinden. Garantiert dies 100% ige Ergebnisse? Was ist, wenn Google nicht erreichbar ist? Wenn die App in einem Land verwendet wird, in dem google.com nicht erlaubt ist, was ist das Ergebnis?

Ich war also in einem großen Dilemma, welche Option ich wählen sollte, ob diese Optionen richtig sind oder ob es eine bessere Möglichkeit gibt, Internet zu überprüfen, die 100% ige Ergebnisse garantiert und sowohl im IPv4- als auch im IPv6-Netzwerk funktioniert. Kann jemand mir vorschlagen, welche Option besser ist oder sollte ich einen anderen Ansatz wählen, was ist der bessere Weg, dies zu erreichen?

Ihre Antwort wird sehr geschätzt werden.

    
skJosh 02.08.2016, 16:39
quelle

4 Antworten

12

Für Swift 3, Xcode 8 ......

%Vor%     
emraz 20.09.2016 08:30
quelle
5

Ich denke, Sie werden diesen Link hilfreich finden: Überprüfung der Netzwerkverbindung in Swift auf IPv6-Netzwerken

%Vor%

// Anwendungsfall

%Vor%

Hier sind ein paar andere Links für die Forschung:

Ссылка

Ссылка

    
Asdrubal 02.08.2016 16:53
quelle
0
  1. Laden Sie den .zip-Ordner von Github

  2. herunter
  3. Entpacken Sie den angehängten Ordner und ziehen Sie die Dateien per Drag & Drop in Ihr Projekt.

  4. Erstellen Sie eine bridge.h -Datei und importieren Sie sie mit #import "Reachability.h" .

  5. Bevor Sie die API aufrufen, können Sie die Internetverbindung mit dem folgenden Code überprüfen:

    %Vor%

Das ist es.

    
Arshad Shaik 30.03.2017 11:04
quelle
0

Alamofire

Wenn Sie bereits Alamofire für alle RESTful Api verwenden, können Sie davon profitieren.

Sie können Ihrer App folgende Klasse hinzufügen und MNNetworkUtils.main.isConnected() aufrufen, um einen booleschen Wert für die Verbindung zu erhalten, ob sie verbunden ist oder nicht.

%Vor%

Dies ist eine Singleton-Klasse. Jedes Mal, wenn Benutzer das Netzwerk verbinden oder trennen, überschreibt es self.reachable korrekt auf true / false, weil wir auf die Initialisierung von NetworkReachabilityManager bei Singleton warten.

Um die Erreichbarkeit zu überwachen, müssen Sie auch einen Host bereitstellen. Zurzeit verwende ich google.com , um bei Bedarf auf andere Hosts oder einen anderen zu wechseln.

Für den besten Ansatz denke ich, wenn Sie Alamofire bereits verwenden, kann dies der beste Ansatz sein. Ich denke nicht, dass die Überwachung von google.com ein schlechtes Design ist. Fühl mich frei, mich zu korrigieren, wenn ich falsch liege.

    
nuynait 02.04.2018 16:47
quelle