如今,大家每天都有大量時間花在手機上,但是,大家有沒有想過自己的時間都花在哪些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