现在,你们天天都有大量时间花在手机上,可是,你们有没有想过本身的时间都花在哪些App上了呢?相信不少人都有这样的需求,不过iOS系统自己并不能显示每一个App的运行时间和次数,所以,本人写了这样一个小工具,能够在后台进行监控当前使用的App,对App的打开次数和运行时间进行统计,能够显示今日、本周、或所有统计结果,并能按打开次数、运行时长排序。git
程序使用的是私有API,所以请勿将本文中提到的方法用于须要发布到AppStore的应用。不过在真机上运行代码,并不须要越狱,只须要有开发者证书便可,所以有证书的朋友能够部署代码到设备上娱乐下。github
程序原理很简单,首先是播放无声音乐,使程序能保持后台运行,其次启动一个计时器,持续获取当前前台运行的App名称,当前台运行的App发生改变时,即写一条记录到数据库,而后监控设备的锁屏消息,当设备锁屏时,暂停计时器,当设备打开锁屏时,继续计时器。若是设备重启,须要从新打开一次程序,统计才能继续进行。spring
运行效果以下:数据库
程序的要点以下:app
(1)播放无声音乐iphone
使用开源代码MMPDeepSleepPreventer工具
(2)获取前台运行App bundleId及App名称spa
获取前台运行的App Bundle Id:SBFrontmostApplicationDisplayIdentifierserver
获取App 名称 :SBSCopyLocalizedApplicationNameForDisplayIdentifierblog
获取App图标:SBSCopyIconImagePNGDataForDisplayIdentifier
具体使用方法参见《iphone SprintBoard部分私有API总结》 及 代码。
(3)监控设备锁屏消息
使用CFNotificationCenterAddObserver对"com.apple.springboard.lockcomplete"和"com.apple.springboard.lockstate"进行监控。根据获得的状态,能够知道设备是锁屏仍是打开非锁屏。