如今,大家每天都有大量时间花在手机上,但是,大家有没有想过自己的时间都花在哪些App上了呢?相信很多人都有这样的需求,不过iOS系统本身并不能显示每个App的运行时间和次数,因此,本人写了这样一个小工具,可以在后台进行监控当前使用的App,对App的打开次数和运行时间进行统计,可以显示今日、本周、或全部统计结果,并能按打开次数、运行时长排序。

程序使用的是私有API,因此请勿将本文中提到的方法用于需要发布到AppStore的应用。不过在真机上运行代码,并不需要越狱,只需要有开发者证书即可,因此有证书的朋友可以部署代码到设备上娱乐下。

程序原理很简单,首先是播放无声音乐,使程序能保持后台运行,其次启动一个计时器,持续获取当前前台运行的App名称,当前台运行的App发生改变时,即写一条记录到数据库,然后监控设备的锁屏消息,当设备锁屏时,暂停计时器,当设备打开锁屏时,继续计时器。如果设备重启,需要重新打开一次程序,统计才能继续进行。

运行效果如下:

        

程序的要点如下:

(1)播放无声音乐

使用开源代码MMPDeepSleepPreventer

(2)获取前台运行App bundleId及App名称

获取前台运行的App Bundle Id:SBFrontmostApplicationDisplayIdentifier

获取App 名称 :SBSCopyLocalizedApplicationNameForDisplayIdentifier

获取App图标:SBSCopyIconImagePNGDataForDisplayIdentifier

具体使用方法参见《iphone SprintBoard部分私有API总结》 及 代码。

(3)监控设备锁屏消息

使用CFNotificationCenterAddObserver对"com.apple.springboard.lockcomplete"和"com.apple.springboard.lockstate"进行监控。根据得到的状态,可以知道设备是锁屏还是打开非锁屏。

代码下载:https://github.com/gugupluto/iOSAppTime

时间都去哪儿了?开源一个统计iPhone上App运行时间和打开次数的小工具【iOS8已失效】的更多相关文章

  1. 文件上传漏洞fuzz字典生成脚本小工具分享

    前言 学习xss的时候翻阅资料发现了一个文件上传漏洞fuzz字典生成脚本小工具,试了试还不错,分享一下 配置 需要python2环境 工具地址:https://github.com/c0ny1/upl ...

  2. InkImageDataSetGenerator-开源一个可用于机器学习的书写轨迹图片生成的小工具

    这是一个简单易用的图片数据集生成小工具,基于OpenCV和UWP Ink API,它可以根据指定的手写轨迹生成一系列各个角度的图片.每张图片的尺寸和总体数量都是可以指定的,均存放在统一的生成目录中.h ...

  3. iphone上点击div会出现半透明灰色背景以及margin失效

    -webkit-tap-highlight-color         这个属性只用于iOS (iPhone和iPad).当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现 ...

  4. 个人开源作品,即时通讯App支持文本、语音、图片聊天

    开源一个即时通讯类App,支持纯文本.语音.地理位置.图片聊天,同时还加入了好友圈功能,支持分享动态和发送图片,支持搜索附近的人,使用的百度地图定位功能:由Bmob后端云提供服务器支持,欢迎喜欢的伙伴 ...

  5. 好用的代码统计小工具SourceCounter(下载)

    SourceCounter下载链接 https://pan.baidu.com/s/12Cg51L0hRn5w-m1NQJ-Xlg 提取码:i1cd 很多时候我们需要统计自己所写的代码的数量.举个栗子 ...

  6. 一个小工具 TcpTextListener

    项目地址 :    https://github.com/kelin-xycs/TcpTextListener 这是一个 可以 监听 Tcp (Http) 传输数据 的 小工具 . 不是 抓包 .不要 ...

  7. python获取每日涨跌停股票统计,封闭时间和打开次数

    接口:limit_list 描述:获取每日涨跌停股票统计,包括封闭时间和打开次数等数据,帮助用户快速定位近期强(弱)势股,以及研究超短线策略. 限量:单次最大1000,总量不限制 积分:用户积2000 ...

  8. 解决iPhone上select时常失去焦点,随意跳到下一个输入框,影响用户操作

    window.addEventListener('load', function() { FastClick.attach(document.body); }, false); //300s延迟,解决 ...

  9. Composite C1是一个.Net平台上开源专业的CMS开源项目

    CompositeC1 4 发布 Composite C1是一个.Net平台上开源专业的CMS开源项目,很多的功能用户界面,面向任务的支持与各种工具协作.当编辑内容时在用户端体验很友好.编辑器与开发者 ...

随机推荐

  1. python 调用java脚本的加密(没试过,先记录在此)

    http://lemfix.com/topics/344 前言 自动化测试应用越来越多了,尤其是接口自动化测试. 在接口测试数据传递方面,很多公司都会选择对请求数据进行加密处理. 而目前为主,大部分公 ...

  2. 【翻译】Flink Table Api & SQL ——Streaming 概念

    本文翻译自官网:Streaming 概念  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/streamin ...

  3. Flink 实现指定时长或消息条数的触发器

    Flink 中窗口是很重要的一个功能,而窗口又经常配合触发器一起使用. Flink 自带的触发器大概有: CountTrigger: 指定条数触发 ContinuousEventTimeTrigger ...

  4. go micro rpc 直接调用 返回500 错误

    开启网关时需要 加上 flags micro api -handle=api --enable_rpc

  5. 最新 医渡云java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.医渡云等10家互联网公司的校招Offer,因为某些自身原因最终选择了医渡云.6.7月主要是做系统复习.项目复盘.LeetCo ...

  6. Django 之memcached的应用

    memcached介绍: memcached之前是danga的一个项目,最早是为LiveJournal服务的,当初设计师为了加速LiveJournal访问速度而开发的,后来被很多大型项目采用.官网是w ...

  7. Django 之安全篇

    一.CSRF攻击 CSRF攻击概述: CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其 ...

  8. idea设置打开文件窗口个数

    idea默认是限制打开10个,超过10个后,前面打开的就会被关闭,有时候跟踪的类多了就不太友好了.

  9. 使用IDEA打开工程未显示左侧工程目录栏

    1. 重启IDEA2. 删除要打开的项目文件夹下的.idea文件夹3. open打开项目即可 注意: 是重启IDEA,不是只关闭IDEA的单个窗口 参考: https://blog.csdn.net/ ...

  10. snakemake学习笔记

    什么是snakemake? snakemake 是一个流程搭建的工具,这里主要用来记录一些snakemake的使用方法 对于run或者shell部分的需要使用sample变量可以使用wildcards ...