iOS获取设备流量使用情况 iPhone Data Usage Tracking/Monitoring

转载 2016年06月01日 10:10:37

获取的是开机后WIFI,3G/GPRS网络下使用流量(仅仅只能获取开机后的)

和一个应用"瓦力流量仪"类似.

瓦力流量仪的核心代码也就是这一段吧!

需要引入

 

#include <arpa/inet.h> 

#include <net/if.h> 

#include <ifaddrs.h> 

#include <net/if_dl.h>


+ (NSArray *)getDataCounters

{

    BOOL   success;

    struct ifaddrs *addrs;

    const struct ifaddrs *cursor;

    const struct if_data *networkStatisc; 

 

    int WiFiSent = 0;

    int WiFiReceived = 0;

    int WWANSent = 0;

    int WWANReceived = 0;

 

    NSString *name=[[[NSString alloc]init]autorelease];

 

    success = getifaddrs(&addrs) == 0;

    if (success) 

    {

        cursor = addrs;

        while (cursor != NULL

        {

            name=[NSString stringWithFormat:@"%s",cursor->ifa_name];

            NSLog(@"ifa_name %s == %@\n", cursor->ifa_name,name);

            // names of interfaces: en0 is WiFi ,pdp_ip0 is WWAN 

            if (cursor->ifa_addr->sa_family == AF_LINK

            {

                if ([name hasPrefix:@"en"]) 

                {

                    networkStatisc = (const struct if_data *) cursor->ifa_data;

                    WiFiSent+=networkStatisc->ifi_obytes;

                    WiFiReceived+=networkStatisc->ifi_ibytes;

                    NSLog(@"WiFiSent %d ==%d",WiFiSent,networkStatisc->ifi_obytes);

                    NSLog(@"WiFiReceived %d ==%d",WiFiReceived,networkStatisc->ifi_ibytes);

                }

                if ([name hasPrefix:@"pdp_ip"]) 

                {

                    networkStatisc = (const struct if_data *) cursor->ifa_data;

                    WWANSent+=networkStatisc->ifi_obytes;

                    WWANReceived+=networkStatisc->ifi_ibytes;

                    NSLog(@"WWANSent %d ==%d",WWANSent,networkStatisc->ifi_obytes);

                    NSLog(@"WWANReceived %d ==%d",WWANReceived,networkStatisc->ifi_ibytes);

                } 

            }

            cursor = cursor->ifa_next;

        }

        freeifaddrs(addrs);

    }       

    return [NSArray arrayWithObjects:[NSNumber numberWithInt:WiFiSent], [NSNumber numberWithInt:WiFiReceived],[NSNumber numberWithInt:WWANSent],[NSNumber numberWithInt:WWANReceived], nil];

}

http://stackoverflow.com/questions/7946699/iphone-data-usage-tracking-monitoring

iOS 检查流量使用情况 监控流量

  • 2015年06月29日 13:40
  • 60KB
  • 下载

iOS开发监测手机流量使用情况

获取手机使用流量存在几个问题: ①iOS是无法像Android一样监听到开机广播和关机广播的,立刻关机再开机,监测的移动网络下流量会默认清空。 ②应用在后台运行时,突然被杀死,无法对流量统计,需要...

关于在iOS设备上探测WIFI,3G,GPRS使用情况的细节

http://blog.csdn.net/devfun/article/details/7365774 由于设计的游戏需要有一些联网请求,但有时候在设备未连接网络的情况下...
  • anypkv
  • anypkv
  • 2013年05月27日 09:33
  • 522

关于在iOS设备上探测WIFI,3G,GPRS使用情况的细节

由于设计的游戏需要有一些联网请求,但有时候在设备未连接网络的情况下,如果对网络情况不加以判断,则可能造成游戏为了等游戏超时,浪费不必要的时间。 所以在游戏启动时检测一下网络状况是很必要的,而且当玩家...
  • DevFun
  • DevFun
  • 2012年03月18日 10:51
  • 12368

关于在iOS设备上探测WIFI,3G,GPRS使用情况的细节

由于设计的游戏需要有一些联网请求,但有时候在设备未连接网络的情况下,如果对网络情况不加以判断,则可能造成游戏为了等游戏超时,浪费不必要的时间。 所以在游戏启动时检测一下网络状况是很必要的,而且当玩家...

打印IOS设备内存使用情况

由于iPhone这类移动设备内存有限,而又不能使用交换区,为了不至于导致内存不足而引起运行效率降低或应用崩溃,有时候需要获取当前的内存状况,以决定采用的缓存策略。 不过iOS SDK文档里并没有提及...

细讲android获取流量使用情况,以及解决调用流量接口不准问题(非TrafficStats,而是NetworkStatsHistory)

不积跬步无以至千里        流量使用情况,好多软件都会带这个功能,比如360的流量监控,好多之类的,手机管家都会带上这个流量计算的功能,连系统应用设置里面也会带一个流量使用情况的查看功能,为什...

Network Monitor使用Top User Expert插件来查看流量使用情况

下载地址:http://nmtopusers.codeplex.com/releases/view/62999   需要首先安装NetworkMonitor 3.3或以上版本。下载地址:h...

Linux下察看网络流量和硬盘使用情况

# sar -n DEV -u 1 10 看看当前网络流量 # iostat -t 1 10 看看当前硬盘读写速度 命令 我到网上找了篇sar使用方法的文章: 在使用UNIX...
  • joeyon
  • joeyon
  • 2014年08月27日 11:20
  • 385
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS获取设备流量使用情况 iPhone Data Usage Tracking/Monitoring
举报原因:
原因补充:

(最多只允许输入30个字)