【发布时间】:2013-02-23 04:18:09
【问题描述】:
我需要研究一组参与实验的测试用户实际使用了哪些应用程序。我想知道每个随机的 3rd 方应用程序用于对其进行统计的时间。如果可能的话,我计划通过 TestFlight 分发一个 iOS 应用程序。我的应用将收集应用使用统计信息并将其发送到我的服务器。
总体目标是每天从参与实验的每个用户那里获取每个已安装应用的总使用时间。
我有什么: 我的一个想法是开发一个应用程序,该应用程序将使用 VoIP 后台配置文件(或类似配置文件)在后台运行并定期(如每 10 秒)记录当前前台应用程序的名称或捆绑标识符(如果有)。
我找到了获取当前运行进程的方法:Can we retrieve the applications currently running in iPhone and iPad
上述帖子中描述的方法给出了一个结构体kinfo_proc,其中包含其他结构体,其中包含进程名称、优先级和运行时间(包括在后台花费的时间)等信息。我无法识别一个标志来揭示前景中的进程。优先级似乎也不是一个可靠的指标。我在这里遗漏了什么?
上述方法可用于获取进程的当前运行时间,但由于每个应用程序都可能在后台休眠数天(或数周),因此对于应用程序的实际使用量而言,这是一个很差的指标。如果我可以每隔一小时左右杀死所有正在运行的用户安装的应用程序,那么我可以获得应用程序使用频率的指标。最常用的应用程序会更频繁地由用户冷启动。但这会给测试人员带来不愉快的体验,因为应用程序会被随机终止。但无论如何,有没有办法可以杀死另一个进程?
另一个思路是遍历视图层次结构,探查任务栏最左侧应用的标签。有什么想法可以破解吗?
我有另一个想法,那就是分析设备日志并以这种方式收集应用使用统计信息。但是,似乎应用程序后台 - 前台切换活动未记录到系统控制台。是否还有其他一些包含此信息的日志,或者我可以通过启用能源诊断日志记录以某种方式获取它?
如果我将测试用户设置为使用 Apple 移动设备管理 (MDM),我是否能够收集我感兴趣的信息?
非常感谢任何想法。
几点说明: 我的测试用户没有越狱设备,但我可以使用私有 API,因为我不是通过 App Store 分发的。
【问题讨论】:
-
所以我发现这个问题基本上回答了我的问题:stackoverflow.com/questions/8252396/…
标签: ios