現在,你們天天都有大量時間花在手機上,可是,你們有沒有想過本身的時間都花在哪些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"進行監控。根據獲得的狀態,能夠知道設備是鎖屏仍是打開非鎖屏。