私のアプリケーションは、mach_absolute_time を使用して最後のタッチ イベント以降のティックを計算し、10 分のアイドル時間制限を超えるとユーザーをログアウトさせます。
これはすべて iOS 6 では正常に動作しますが、iOS 7 では正しく動作していないことに気付きました。具体的には、iOS 7 デバイスが (バッテリで) 取り外されると、次のようにスリープ状態になると、デバイスは目盛りの増加を停止するようです。コンソールの次の行 (これは、非アクティブ状態が約 5 分間続くと発生します):
powerd[47] : スリープ: BATT を使用 (充電: 99%)
したがって、10 分後にデバイスを起動し、mach_absolute_time を使用してティックを計算すると、差はわずか 5 分であることがわかります (実際には 10 分経過しています)。
奇妙なことに、すべてが正常に機能し、デバイスが電源に接続されているとティックが実行され続けます。デバイスが接続されている場合、デバイスがコンソール ログでスリープ状態になることは決して示されません (ただし、画面はオフになり、動作はプラグを抜いた場合と視覚的に同じになります)。
これも clock_get_time を使用して試しましたが、同じ問題に直面しています。
デバイスがスリープ状態になったときに Mach 絶対時間を刻み続けるために iOS 7 でできることはありますか? [[NSDate date] timeIntervalSince1970]
ユーザーがシステム時間を操作してこれをバイパスできるため、使用したくありません。
洞察をありがとう。