アプリケーションがいつ終了したかを知る必要があります。applicationWillTerminate: がバックグラウンド/サスペンド状態から呼び出されることに依存できないことはわかっています。アプリケーションが終了すると、Snapshots ディレクトリ (Library/Caches/Snapshots) が変更されることに気付きました。その後のアプリケーションの起動時に、その変更時間を調べることができます。
applicationDidEnterBackground: または applicationWillResignActive: メソッドが起動する時間をマークしない理由を不思議に思われるかもしれません。アプリがバックグラウンドで費やす時間を数えたくありません。
これは機能していますが、これに頼ることができるのか、それともより良いアプローチがあるのか どうか疑問に思いました(より良いアプローチをさせてください).
ありがとう!