uniapp 原生插件IOS获取系统流量
做下笔记更新下,之前资料需要更新下
找的资料有地方需要适配最新系统
添加 SystemConfiguration.framework
加入头文件
/// 获取网络流量
#include <ifaddrs.h>
#include <sys/socket.h>
#include <net/if.h>
#pragma mark -- 获取手机系统流量
-(NSString *)bytesToAvaiUnit:(double)bytes
{
if(bytes < 1024){ // B
return [NSString stringWithFormat:@"%.0fB", bytes];
} else if(bytes >= 1024 && bytes < 1024 * 1024) { // KB
return [NSString stringWithFormat:@"%.1fKB", bytes / 1024];
} else if(bytes >= 1024 * 1024 && bytes < 1024 * 1024 * 1024) {// MB
return [NSString stringWithFormat:@"%.2fMB", bytes / (1024 * 1024)];
} else { // GB
return [NSString stringWithFormat:@"%.3fGB", bytes / (1024 * 1024 * 1024)];
}
}
-(void)checkNetworkflow{
struct ifaddrs *ifa_list = 0, *ifa;
if (getifaddrs(&ifa_list) == -1){
return;
}
uint32_t iBytes = 0;
uint32_t oBytes = 0;
uint32_t allFlow = 0;
uint32_t wifiIBytes = 0;
uint32_t wifiOBytes = 0;
uint32_t wifiFlow = 0;
uint32_t wwanIBytes = 0;
uint32_t wwanOBytes = 0;
uint32_t wwanFlow = 0;
struct IF_DATA_TIMEVAL time ;
for (ifa = ifa_list; ifa; ifa = ifa->ifa_next) {
if (AF_LINK != ifa->ifa_addr->sa_family)
continue;
if (!(ifa->ifa_flags & IFF_UP) && !(ifa->ifa_flags & IFF_RUNNING))
continue;
if (ifa->ifa_data == 0)
continue;
// Not a loopback device.
// network flow
if (strncmp(ifa->ifa_name, "lo", 2)) {
struct if_data *if_data = (struct if_data *)ifa->ifa_data;
iBytes += if_data->ifi_ibytes;
oBytes += if_data->ifi_obytes;
allFlow = iBytes + oBytes;
time = if_data->ifi_lastchange;
// NSLog(@"1111===%s :iBytes is %d, oBytes is %d", ifa->ifa_name, iBytes, oBytes);
}
//<span style="font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; ">WIFI流量统计功能</span>
if (!strcmp(ifa->ifa_name, "en0")) {
struct if_data *if_data = (struct if_data *)ifa->ifa_data;
wifiIBytes += if_data->ifi_ibytes;
wifiOBytes += if_data->ifi_obytes;
wifiFlow = wifiIBytes + wifiOBytes;
}
//<span style="font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; ">3G和GPRS流量统计</span>
if (!strcmp(ifa->ifa_name, "pdp_ip0"))
{
struct if_data *if_data = (struct if_data *)ifa->ifa_data;
wwanIBytes += if_data->ifi_ibytes;
wwanOBytes += if_data->ifi_obytes;
wwanFlow = wwanIBytes + wwanOBytes;
//NSLog(@"111122===%s :iBytes is %d, oBytes is %d", ifa->ifa_name, iBytes, oBytes);
}
}
freeifaddrs(ifa_list);
NSString *changeTime=[NSString stringWithFormat:@"%s",ctime(&time)];
NSLog(@"changeTime==%@",changeTime);
NSString *receivedBytes= [self bytesToAvaiUnit:iBytes];
NSLog(@"receivedBytes==%@",receivedBytes);
NSString *sentBytes = [self bytesToAvaiUnit:oBytes];
NSLog(@"sentBytes==%@",sentBytes);
NSString *networkFlow = [self bytesToAvaiUnit:allFlow];
NSLog(@"networkFlow==%@",networkFlow);
NSString *wifiReceived = [self bytesToAvaiUnit:wifiIBytes];
NSLog(@"wifiReceived==%@",wifiReceived);
NSString *wifiSent = [self bytesToAvaiUnit: wifiOBytes];
NSLog(@"wifiSent==%@",wifiSent);
NSString *wifiBytes = [self bytesToAvaiUnit:wifiFlow];
NSLog(@"wifiBytes==%@",wifiBytes);
NSString *wwanReceived = [self bytesToAvaiUnit:wwanIBytes];
NSLog(@"wwanReceived==%@",wwanReceived);
NSString *wwanSent = [self bytesToAvaiUnit:wwanOBytes];
NSLog(@"wwanSent==%@",wwanSent);
NSString *wwanBytes = [self bytesToAvaiUnit:wwanFlow];
NSLog(@"wwanBytes==%@",wwanBytes);
}
调用:
[self checkNetworkflow];
打印结果:
2022-11-21 11:49:30.616967+0800 UniPluginDemo[32755:909602] changeTime==Wed Nov 16 17:04:35 2022
2022-11-21 11:49:30.617152+0800 UniPluginDemo[32755:909602] receivedBytes==2.135GB
2022-11-21 11:49:30.617219+0800 UniPluginDemo[32755:909602] sentBytes==147.23MB
2022-11-21 11:49:30.617278+0800 UniPluginDemo[32755:909602] networkFlow==2.279GB
2022-11-21 11:49:30.617336+0800 UniPluginDemo[32755:909602] wifiReceived==2.114GB
2022-11-21 11:49:30.617392+0800 UniPluginDemo[32755:909602] wifiSent==142.70MB
2022-11-21 11:49:30.617450+0800 UniPluginDemo[32755:909602] wifiBytes==2.253GB
2022-11-21 11:49:30.617508+0800 UniPluginDemo[32755:909602] wwanReceived==0B
2022-11-21 11:49:30.617968+0800 UniPluginDemo[32755:909602] wwanSent==0B
2022-11-21 11:49:30.618053+0800 UniPluginDemo[32755:909602] wwanBytes==0B
参考资料:
https://www.cnblogs.com/jx66/p/5750191.html