Swift - Get-device-WIFI-IP-Adresse
Ich brauche, um die IP-Adresse des iOS-Geräts in Swift. Dies ist kein Duplikat von anderen Fragen zu diesem Thema! Ich brauche nur die WLAN IP-Adresse, wenn es keine wifi-ip-Adresse - ich muss es behandeln. Es gibt ein paar Fragen auf Stack Overflow, aber es gibt nur Funktionen, die ip-Adressen. Zum Beispiel (aus Wie man die Ip-Adresse in swift):
func getIFAddresses() -> [String] {
var addresses = [String]()
//Get list of all interfaces on the local machine:
var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
if getifaddrs(&ifaddr) == 0 {
//For each interface ...
for (var ptr = ifaddr; ptr != nil; ptr = ptr.memory.ifa_next) {
let flags = Int32(ptr.memory.ifa_flags)
var addr = ptr.memory.ifa_addr.memory
//Check for running IPv4, IPv6 interfaces. Skip the loopback interface.
if (flags & (IFF_UP|IFF_RUNNING|IFF_LOOPBACK)) == (IFF_UP|IFF_RUNNING) {
if addr.sa_family == UInt8(AF_INET) || addr.sa_family == UInt8(AF_INET6) {
//Convert interface address to a human readable string:
var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
if (getnameinfo(&addr, socklen_t(addr.sa_len), &hostname, socklen_t(hostname.count),
nil, socklen_t(0), NI_NUMERICHOST) == 0) {
if let address = String.fromCString(hostname) {
addresses.append(address)
}
}
}
}
}
freeifaddrs(ifaddr)
}
return addresses
}
Hier bekomme ich 2 Werte - Adresse vom mobilen internet(glaube ich) und WiFi-Adresse, die ich brauche. Gibt es eine andere Möglichkeit, um NUR die WiFi-IP-Adresse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut mehreren SO threads (z.B. Was genau das bedeutet, iOS, Netzwerk-Schnittstelle, name? was pdp_ip ? was ist ap?), das WiFi-interface auf einem iOS-Gerät hat immer dann den Namen "en0".
Dein code (das scheint das zu sein, was ich beantwortet Wie man die Ip-Adresse in swift 🙂 ruft eine Liste der IP-Adressen von alle Netzwerk-Schnittstellen. Es kann leicht verändert werden, wieder nur die IP-Adresse
von "en0" - Schnittstelle, und das ist eigentlich das, was ich ursprünglich hatte
beantwortet in diesem thread (und dies ist nur eine schnelle übersetzung des
Antwort auf wie man die ip-Adresse des iphone programmgesteuert):
Verwendung:
Update für Swift 3: neben der Verabschiedung des Kodex der
viele änderungen im Swift 3,
Iteration über alle Schnittstellen können nun die generalisierten
Folge()
Funktion:Tun NICHT vergessen, hinzuzufügen
#include <ifaddrs.h>
in Ihrer bridging-headerFür diejenigen von Euch, die gekommen sind auf der Suche für mehr als die WIFI-IP ein, die Sie ändern könnte, diesen code ein wenig
Dann haben wir Zugang zum Mobilfunk-IP-Adresse als gut.
guard let wifiIp = getAddress(for: .wifi) else { return }
&
guard let cellularIp = getAddress(for: .cellular) else { return }
Ethernet
undDatapacks
?addrFamily == UInt8(AF_INET6)
überprüfen.import Darwin
der Swift-Datei.Erstellen bridging-header-und Include -
#include <ifaddrs.h>
im es.dann schreiben Sie diese Methode
wenn ich diese Methode in meiner viewController wie
var arr : NSArray = self.getIFAddresses()
bekomme ich die perfekte Antwort in meiner Konsole wieIP 🙁
"10.0.0.94"
)
aus diesem array können Sie zugreifen, wo immer u wollen.
Hoffe es hilft
Swift 4 - Get-device-IP-Adresse:
Hinzufügen
#include<ifaddrs.h>
in Ihrer bridging-header.Ist das der Rahmen benötigt wird, um die IP-Adresse.
Swift 4.2
UIDevice
Erweiterung, die verhindert, dass Kraft packt und unterstützt die Mobilfunk-und WLAN-ip-Adressen:Verwendung:
Holen Sie IP-Adresse mithilfe des folgenden Codes:
Hinweis : ich ' ve verwendet, Erreichbarkeit, so dass es erfasst neue IP-Adresse bei WLAN ist eine andere geändert.
In
Podfile
Dateipod 'ReachabilitySwift'
und danninstall pod
In
AppDelegate.swift
Dateiimport ReachabilitySwift
Hinweis:, Wenn es fordert, dass ein Fehler nicht finden Konnte ReachabilitySwift Modul dann einfach kopieren und einfügen. Es funktioniert!
didFinishLaunchingOptions
FunktionDann kopieren Sie untenstehenden code in
AppDelegate
DateiFügen Sie diese in den Bridging-Header-Datei
#include<ifaddrs.h>
Falls Sie nicht über diese Datei, dann können Sie es Überprüfen Sie diesen link
6.
Wenn Sie entfernen möchten, Beobachter, dann:
Um-IP-Adresse für die wifi -, WLAN-und cellular (swift 5)
Wie zu verwenden
Hinweis : Fügen Sie diese unten in Ihr Projekt Bridging-Header-Datei
Alle Antworten hier gibt nur die ip-Adresse für wifi und kein WLAN-oder Mobilfunk). Folgende Ausschnitt kann verwendet werden für wifi - /WLAN - /Mobilfunk-Fall:
Wenn Sie möchten, dass nur IPv4-Antwort als Ausgabe ändern Sie einfach die Lösung von Martin R.
Verwendung:
address === " "
(ich.e leer) aber bei meinem Gerät ist, aktivieren der externen hotspot funktioniert ok. Ich arbeite mit iOS 12.1.4.Für Swift auf Mac - Swift 4 :
Auf diese Weise können Sie auch herausfinden, die ip vom WLAN (nicht nur Ethernet)