获取当前前台应用程序的名称

我需要研究一组参与实验的testing用户实际使用的应用程序。 我想知道每个随机的第三方应用程序已经被用来做统计的时间。 如果可能,我计划通过TestFlight发布iOS应用程序。 我的应用程序将收集应用程序使用情况统计数据并将其发送到我的服

总体目标是从参与实验的每个用户每天获取每个安装的应用的总使用时间。

我有什么:我的想法之一是开发一个应用程序,将使用VoIP后台configuration文件(或类似)在后台运行,并定期(如每10秒)logging当前前台应用程序的名称或包标识符(如果任何)。

我find了一个获取当前正在运行的进程的方法: 我们可以检索当前在iPhone和iPad上运行的应用程序在上面的文章中描述的方法给出了一个结构kinfo_proc ,其中包含其他结构,包括进程名称,优先级和运行时间包括花在后台的时间)。 我还没有能够确定一个标志,揭示了前景的过程。 此外,优先事项似乎不是一个可靠的指标。 我在这里错过的东西?

上面的方法可以用来获取进程的当前运行时间,但是由于每个应用程序都可能在后台进行了几天(或几周)的睡眠,所以这是一个糟糕的指示器,显示应用程序实际使用了多less。 如果我可以每隔一小时左右杀死所有正在运行的用户安装的应用程序,我可以得到应用程序使用频率的指标。 最常用的应用程序将更频繁地由用户冷启动。 但是,随着应用程序被随机杀死,这给testing人员带来了不愉快的体验。 但无论如何,有什么办法可以杀死另一个进程?

另一个想法是遍历视图层次结构来探测任务栏中最左边的应用程序的标签。 任何想法如何这可能是黑客?

我有另一个分析设备日志和收集应用程序使用情况统计数据的想法。 但是,应用程序后台切换活动似乎没有logging到系统控制台。 是否有其他日志包含这些信息,或者我可以得到它通过启用能源诊断日志logging?

如果我将testing用户设置为使用Apple Mobile Device Management(MDM),那么我是否可以收集我感兴趣的信息?

任何想法都非常感激。

一些注意事项:我的testing用户没有越狱设备,但我可以使用私有API,因为我没有通过App Store发布。

我将使用像Flurry Analytics这样的分析工具来获取有关使用情况统计的数据,然后可以使用他们的API将这些数据下载到您的应用中。 他们可以详细了解您的用户如何使用您的应用程序,频繁程度等等。这是一个很棒的工具,而且是免费的!