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