我想了解每个应用程序使用了多少来自 3G 的数据。这在 iOS 5.x 中可行吗?在 iOS 4.x 中呢?我的目标是例如:
- 地图从您的数据计划中消耗了 3 MB
- 邮件从您的数据计划中消耗了 420 kB
等等等等。这可能吗?
编辑:我刚刚发现这样做的应用程序:Data Man Pro
编辑2:我开始赏金了。加分用于使这一点清楚的答案。我知道这是可能的(来自 Data Man Pro 的屏幕),我确信解决方案是有限的。但是解决方案是什么以及如何实施。
我想了解每个应用程序使用了多少来自 3G 的数据。这在 iOS 5.x 中可行吗?在 iOS 4.x 中呢?我的目标是例如:
等等等等。这可能吗?
编辑:我刚刚发现这样做的应用程序:Data Man Pro
编辑2:我开始赏金了。加分用于使这一点清楚的答案。我知道这是可能的(来自 Data Man Pro 的屏幕),我确信解决方案是有限的。但是解决方案是什么以及如何实施。
这些只是提示而不是解决方案。我想了很多次,但从来没有真正开始实施整个事情。
首先,您可以计算查询网络接口的传输字节数,看看这个 SO answer for code 和一个关于 iOS 上网络接口的很好的解释;
使用sysctl或类似的系统功能来检测当前正在运行的应用程序(对于运行,我的意思是进程状态设置为 RUNNING,就像 OSX 上的ps或top命令一样。从未尝试过我只是假设这在 iOS 上是可能的,希望应用程序作为非特权用户运行没有问题),因此您可以推断哪些应用程序正在运行并保存这些应用程序的流量统计信息。显然,考虑到应用程序在后台运行的可能性,很难确定哪个应用程序正在传输数据。
还可以检索有关每个进程/应用程序的网络活动信息,就像nettop在 OSX Lion 上所做的那样,不幸的是nettop使用私有框架 NetworkStatistics.framework 所以你不能挖掘它的实现;
我的 2 美分
不,iOS 中的所有应用程序都是沙盒化的,这意味着您无法访问应用程序之外的任何内容。我不相信这是可能的。我也不相信数据流量保存在设备上的这个级别,因此苹果会在页面network
或.usage
Settings.app
除此之外,并不是每个人都有“数据计划”。例如,在瑞典,数据流量是免费的,没有大小或速度的限制。