

## iPhoneの使用時間(端末がスリープしていない時間)を計測するアプリを作りたいと考えています。しかし、計測方法がわかりません。

### 質問1

端末の使用時間を計測しているみたいなんですが、  
(一般＞使用状況＞バッテリーの使用状況＞使用時間)  
その情報をアプリから取得することはできませんか？

### 質問2

端末がスリープから起きたタイミングでバックグラウンドでアプリを起動し、時刻を取得するといった処理することは可能ですか？  
また、端末がスリープした後にバックグラウンドでスリープした時刻を取得する処理は可能ですか？

### 質問3

その他にiphoneの使用時間を計測する方法はありませんか？

どうかご教示ください。


CC BY-SA 3.0
2015-04-26T02:53:50.787
9558
2015-05-07T05:36:41.883
2020-06-17T08:14:45.997
-1
question
ios objective-c swift xcode iphone
iPhoneの使用時間(端末がスリープしていない時間)を計測したい


> 端末がスリープした後にバックグラウンドでスリープした時刻を取得する処理は可能ですか？

Background Fetchを利用することで実現できるのではないでしょうか。  
設定した時間毎(おおよそですが)にapplication:performFetchWithCompletionHandlerが呼ばれるので、その中で時刻を取得してアプリケーション起動時等の時刻との差を求めてという方法を試してみると良いかもしれません。

Background Fetchの説明については検索すると色々と情報があります。


CC BY-SA 3.0
2015-04-28T01:47:18.700
9626
2015-04-28T01:47:18.700
8350
9558
answer


NSProcessInfoのsystemUptimeファンクションで使用時間(秒)がわかります。  
スリープするとuptimeは増えないので、起動してから端末を動かしている時間の累計のようです。

<https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSProcessInfo_Class/index.html#//apple_ref/occ/instp/NSProcessInfo/systemUptime>


CC BY-SA 3.0
2015-05-07T05:36:41.883
9883
2015-05-07T05:36:41.883
9631
9558
answer