Wallpaper_Home/wallpaper_project/Tool/ip/ipManager.swift
忆海16 5ff1070967 mtg
2024-07-23 11:44:01 +08:00

111 lines
2.8 KiB
Swift

//
// ipManager.swift
// wallpaper_project
import Foundation
import UIKit
import SystemConfiguration
import Foundation
class StartManager:NSObject{
static var shared = StartManager()
///ip
var localIP:String?
///ip
var publicIP:String?
///ID
var devicID:String?
///IDFA
var idfaid:String?
///
var shelfNumber:String?
///
var packageName:String = "com.wallpapaer.hd.live.app"
///广
var succeed:Bool = false
///
var loadTime:Int?
///广
var adPlatform:String?
///
var countryCode:String?
///广Id
var adId:String?
///广
var platformResponseTime:TimeInterval?
///IP
var getIpResponseTime:Float?
///广
var ecpm:Float?
///广1
var dsp:String?
///广2
var network:String?
///superHero
var superHero:Bool = false
private override init() {}
}
///ip
func getLocalIPAddress() -> String? {
var address: String?
var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
if getifaddrs(&ifaddr) == 0 {
var ptr = ifaddr
while ptr != nil {
let interface = ptr?.pointee
let addrFamily = interface?.ifa_addr.pointee.sa_family
if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
if let name = interface?.ifa_name, String(cString: name) == "en0" {
var addr = interface?.ifa_addr.pointee
var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
if getnameinfo(&addr!, socklen_t((interface?.ifa_addr.pointee.sa_len)!),
&hostname, socklen_t(hostname.count),
nil, socklen_t(0), NI_NUMERICHOST) == 0 {
address = String(cString: hostname)
}
}
}
ptr = interface?.ifa_next
}
freeifaddrs(ifaddr)
}
return address
}
///ip
func getPublicIPAddress(completion: @escaping (String?) -> Void) {
let url = URL(string: "https://api.ipify.org?format=json")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data, error == nil else {
print("Error fetching public IP address: \(error?.localizedDescription ?? "Unknown error")")
completion(nil)
return
}
if let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any],
let ip = json["ip"] as? String {
completion(ip)
} else {
completion(nil)
}
}
task.resume()
}