C'è un modo per tenere traccia dei dati cellulari utilizzati dal dispositivo in swift? C'è qualche api? Sto cercando di ottenere qualcosa come thisMonitora l'utilizzo dei dati cellulari utilizzando swift
5
A
risposta
1
Aggiornato a Swift 4 puoi usare questa semplice estensione. Per monitorare la cella del dispositivo e l'utilizzo del Wi-Fi.
extension SystemDataUsage {
public static var wifiCompelete: UInt64 {
return SystemDataUsage.getDataUsage().wifiSent + SystemDataUsage.getDataUsage().wifiReceived
}
public static var wwanCompelete: UInt64 {
return SystemDataUsage.getDataUsage().wirelessWanDataSent + SystemDataUsage.getDataUsage().wirelessWanDataReceived
}
}
class SystemDataUsage {
private static let wwanInterfacePrefix = "pdp_ip"
private static let wifiInterfacePrefix = "en"
class func getDataUsage() -> DataUsageInfo {
var ifaddr: UnsafeMutablePointer<ifaddrs>?
var dataUsageInfo = DataUsageInfo()
guard getifaddrs(&ifaddr) == 0 else { return dataUsageInfo }
while let addr = ifaddr {
guard let info = getDataUsageInfo(from: addr) else {
ifaddr = addr.pointee.ifa_next
continue
}
dataUsageInfo.updateInfoByAdding(info)
ifaddr = addr.pointee.ifa_next
}
freeifaddrs(ifaddr)
return dataUsageInfo
}
private class func getDataUsageInfo(from infoPointer: UnsafeMutablePointer<ifaddrs>) -> DataUsageInfo? {
let pointer = infoPointer
let name: String! = String(cString: pointer.pointee.ifa_name)
let addr = pointer.pointee.ifa_addr.pointee
guard addr.sa_family == UInt8(AF_LINK) else { return nil }
return dataUsageInfo(from: pointer, name: name)
}
private class func dataUsageInfo(from pointer: UnsafeMutablePointer<ifaddrs>, name: String) -> DataUsageInfo {
var networkData: UnsafeMutablePointer<if_data>?
var dataUsageInfo = DataUsageInfo()
if name.hasPrefix(wifiInterfacePrefix) {
networkData = unsafeBitCast(pointer.pointee.ifa_data, to: UnsafeMutablePointer<if_data>.self)
if let data = networkData {
dataUsageInfo.wifiSent += UInt64(data.pointee.ifi_obytes)
dataUsageInfo.wifiReceived += UInt64(data.pointee.ifi_ibytes)
}
} else if name.hasPrefix(wwanInterfacePrefix) {
networkData = unsafeBitCast(pointer.pointee.ifa_data, to: UnsafeMutablePointer<if_data>.self)
if let data = networkData {
dataUsageInfo.wirelessWanDataSent += UInt64(data.pointee.ifi_obytes)
dataUsageInfo.wirelessWanDataReceived += UInt64(data.pointee.ifi_ibytes)
}
}
return dataUsageInfo
}
}
struct DataUsageInfo {
var wifiReceived: UInt64 = 0
var wifiSent: UInt64 = 0
var wirelessWanDataReceived: UInt64 = 0
var wirelessWanDataSent: UInt64 = 0
mutating func updateInfoByAdding(_ info: DataUsageInfo) {
wifiSent += info.wifiSent
wifiReceived += info.wifiReceived
wirelessWanDataSent += info.wirelessWanDataSent
wirelessWanDataReceived += info.wirelessWanDataReceived
}
}
Si può usare come: SystemDataUsage.wifiCompelete
+0
questo utilizzo è per dispositivo generale o singola applicazione –
Problemi correlati
- 1. UIPickerView - Loop dei dati
- 2. Analisi dei dati JSON nidificati utilizzando GSON
- 3. Errore durante l'inserimento dei dati utilizzando SqlBulkCopy
- 4. Analisi dei dati utilizzando BeautifulSoup in Python
- 5. Condivisione dei dati utilizzando pyzmq zero-copy
- 6. squilibrio dei dati in SVM utilizzando libSVM
- 7. ipython cellulari Notebook uscite multiple
- 8. recupero dei dati di base nelle celle tableview swift
- 9. Valori transitori dei dati di base con Swift
- 10. Gestione dei dati XML con Alamofire in Swift
- 11. Come identificare la distribuzione dei dati dati utilizzando r
- 12. Ordinamento dei risultati CoreData utilizzando NSPredicate in Swift
- 13. Android: FileObserver monitora solo directory principale
- 14. Come passare i dati utilizzando NotificationCentre in swift 3.0 e NSNotificationCenter in swift 2.0?
- 15. Realtà aumentata su telefoni cellulari
- 16. javascript funziona sui telefoni cellulari?
- 17. Modifica dell'oscillazione JTable cellulari Colori
- 18. utilizzando cocoapods "use_frameworks!" SWIFT
- 19. Accesso ai dati dei dati dei moduli
- 20. Swift - Ottieni l'elenco dei Paesi
- 21. Confronto dei tipi con Swift
- 22. Toccare Ingresso microfono utilizzando AVAudioEngine in Swift
- 23. come creare streaming audio live tra due cellulari Android utilizzando la programmazione socket ..?
- 24. Enum con dati in swift
- 25. Firebase Recupero dati in Swift
- 26. scrollTop non funziona sui cellulari Android
- 27. Trascinamento: sostituzione dei dati
- 28. Firma e verifica dei dati utilizzando pycrypto (RSA)
- 29. Inserimento di array utilizzando i dati dei moduli
- 30. Impossibile valore per ottenere dei dati degli attributi utilizzando jQuery
Partenza __ [questa domanda] (http://stackoverflow.com/questions/7946699/iphone-data-usage-tracking-monitoring/8014012#8014012) __. È per Objective - C, ma penso che potresti cambiarlo con poco sforzo per farlo funzionare in Swift. – aksh1t