Gibt es eine Möglichkeit zum Verfolgen von Mobilfunkdaten, die vom Gerät in swift verwendet werden? Gibt es eine API? Ich versuche, so etwas wie thisVerfolgen der Nutzung von Mobilfunkdaten mithilfe von swift
5
A
Antwort
1
Aktualisiert Swift 4 erreichen Sie diese einfache Erweiterung verwenden können. Um die Gerätezelle und WLAN-Nutzung zu verfolgen.
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
}
}
Sie können es verwenden, wie: SystemDataUsage.wifiCompelete
+0
Diese Verwendung gilt für das gesamte Gerät oder eine einzelne App –
Verwandte Themen
- 1. Das Anzeigen von Mobilfunkdaten ist deaktiviert. Warnung
- 2. Löschen von Dateien im iOS-Verzeichnis mithilfe von Swift
- 3. So verfolgen Sie den Status eines POJO mithilfe der Codegenerierung
- 4. Wie kann ich die API-Nutzung in Symfony2 verfolgen?
- 5. TaskAwaiter kann nicht von der Nutzung
- 6. Abmeldung von PhpStorm zur Deaktivierung der Nutzung
- 7. Select kann nicht von der Nutzung
- 8. Verwenden von Google Analytics zum Verfolgen der Benutzersitzung
- 9. Git + LaTeX + BitBucket: Gemeinsame Nutzung von Bilddateien
- 10. Verfolgen von angemeldeten Benutzern
- 11. Verfolgen von Änderungen in der Tabelle nodejs
- 12. Verfolgen der Änderung von PHP-Objekteigenschaften
- 13. Verfolgen von offenen Fenstern
- 14. Nutzung von Flächen in MVC2
- 15. Ist Google Analytics sicher, um die Nutzung von Geschäftsanwendungen zu verfolgen?
- 16. Gemeinsame Nutzung von SSH-Schlüsseln
- 17. Perl tr Nutzung von regexp
- 18. Erklärung und Nutzung von JSONP
- 19. Fehler beim Laden des Balkendiagramms mithilfe von Diagrammen (in swift)
- 20. Gemeinsame Nutzung von Rails-Anwendungen?
- 21. Nutzung von `else` in Makros
- 22. So laden Sie Bilder mithilfe von Swift in Azure hoch
- 23. Bereitstellen von Anwendungen mithilfe von Marathon mithilfe von GIT-Repository
- 24. Orchard cms Verfolgen von Datensatz-Repository wie Verfolgen von Inhaltselementen in Audit Trail
- 25. Wie Crash von Fensterform verfolgen?
- 26. Verfolgen von Benutzerpunkten (wie SO)
- 27. Hibernate mithilfe von Anmerkungen oder mithilfe von Hibernate-Konfigurationsdateien
- 28. Wie Verwenden von Constraint-IDs in Autolayout und wie Ändern von Einschränkung mithilfe von Bezeichnern? [Swift]
- 29. Verfolgen von Ereignissen eines Steuerelements
- 30. Deserialisierung der XML-Datei mithilfe von XmlArray?
Check out __ [diese Frage] (http://stackoverflow.com/questions/7946699/iphone-data-usage-tracking-monitoring/8014012#8014012) __. Es ist für Objective - C, aber ich denke, Sie könnten es mit wenig Aufwand ändern, damit es in Swift funktioniert. – aksh1t