0
Ich bekomme auf diese Weise IP-Adresse des Telefons.So erhalten Sie die IP-Adresse, wenn Sie mit den mobilen Daten verbunden sind swift3
func getIPAddress() -> String? {
var address : String?
var ifaddr : UnsafeMutablePointer<ifaddrs>? = nil
if getifaddrs(&ifaddr) == 0 {
var ptr = ifaddr
while ptr != nil {
defer { ptr = ptr?.pointee.ifa_next }
let interface = ptr?.pointee
let addrFamily = interface?.ifa_addr.pointee.sa_family
if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
if let name:String = String(cString: (interface?.ifa_name)!), name == "en0" {
var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
getnameinfo(interface?.ifa_addr, socklen_t((interface?.ifa_addr.pointee.sa_len)!),
&hostname, socklen_t(hostname.count),
nil, socklen_t(0), NI_NUMERICHOST)
address = String(cString: hostname)
}
}
}
freeifaddrs(ifaddr)
}
return address
}
Aber das zurückgibt, wenn nur mit einem WLAN verbunden. Wie bekomme ich eine IP-Adresse, wenn ich mit mobilen Daten verbunden bin?
Dieser Code [sieht vertraut] (https://Stackoverflow.com/a/30754194/1187415)! - Beachten Sie, dass explizit nach der Schnittstelle "en0" gesucht wird (dies ist die WiFi-Schnittstelle auf iOS-Geräten). Eine Liste der * all * Schnittstellenadressen finden Sie unter https://stackoverflow.com/a/25627545/1187415. –
Mögliches Duplikat von [Wie bekomme ich IP-Adresse in swift] (https://stackoverflow.com/questions/25626117/how-to-get-ip-address-in-swift). –
@MartinR Danke für den Kommentar yeas kann ich jetzt auch die Adresse wenn ich auf mobile Daten bin. Aber ich habe ein kleines Problem. wenn ich an wifi anschließe, holt es IPaddress als 1. Wert zurück, aber wenn es auf beweglichen Daten ist, kommt er als 0. Position zurück, wie kann ich also überprüfen, ob seine beweglichen Daten oder wifi, um den korrekten Index zu verweisen? – user1960169