我最近在应用商店中发现了一个名为Dataman Pro的应用。它具有一项功能,可让您查看每个应用程序的数据使用情况(请参阅附加的屏幕截图)。我一直想知道它是如何获得这种信息的。
答案 0 :(得分:3)
有关获取已安装应用列表的信息,请参阅this post,以及this git project。
然后关于使用情况跟踪:
如果您想知道任何公共API可以为您提供开箱即用的网络统计信息 - 那里什么也没有。
DataMan it self是一个过去常常在后台工作的应用程序,并绑定到网络接口以跟踪网络使用情况。这是其数据永远不会100%准确的原因之一,因为它不能保证始终在后台运行。这也是Apple在几个版本之后从AppStore中踢出它的原因......
现在该应用程序已经返回,如果我理解正确,在做了一些更改后:主要是避免" hacks"留在后台,并在用户四处移动时使用位置服务重新上线。我想这是另一个黑客,但苹果并没有反对,但是。
修改强>
在网上浏览了一下之后,似乎Apple也发现了这个技巧,并且由于使用位置留在后台而从AppStore删除了许多应用程序。我想现在它在背景中的工作时间不超过10分钟,所以当你想要测量当前活动时打开它,并在10分钟后停止测量。
关于跟踪代码本身,它主要是C代码,使用CFNetwork框架,你可以在这个主题上找到关于stackoverflow的一些答案。
更多,回应评论:
好吧,关于看到已安装的应用列表和前台应用的部分,并不完全是私有API,而是私有plist,正如您所提到的那样。 访问私有文件的应用程序会不时地通过。当Apple发现一些"私人"访问文件并且需要保持更安全 - 它们在iOS更新中更改它,就像它们对敏感的呼叫历史文件一样。旧应用程序倾向于使用(在iOS< = 3.3左右)调用历史记录数据库来执行某些统计信息,而在iOS4上,它们已被文件移动到安全位置而过时。
阅读"私人"不受保护的文件很容易做到,而不会被自动分析仪捕获。 当您知道哪个是前台应用程序,并且您可以计算当前网络使用情况时,您可以将其与应用程序关联...并获得估算。所以这就是他们最有可能做到的。
然而这些技术会不时发生变化,原因是Apple会重新审核应用及其自己的政策,以及API更改,以及您是否跟踪此类应用的历史记录,甚至是特定的应用程序 - 你会看到他们不时被从AppStore中踢出并带来扭曲。他们调整......所以没有技术是可靠的,这是一个很难维护,这可能是开发商收取9.99美元的原因。我愿意。