2011-08-19 6 views
10

カジュアルゲームでよく使われるのは、人為的にシステムクロックを進めてゲームプレイを先に進めることです。このようなユーザークロックの進歩は、iOSデバイスのアプリでどのように検出できますか?どのように私は、アプリケーションの実行の間にユーザーがiPhoneクロックの進歩をローカルに検出できますか?

  • クロック
  • クロック前進を検出しなければならない高度である(実行中または中断)
  • アプリが開いていると仮定しない必要があるネットワーク通信伴わない必要があり、クロックロールバックを検出することが理想的

十分ではありませんソリューションは再起動に対して堅牢になりますが、それは要件ではありません。

+1

ネットワーク通信なしでは実行できないと考えてください。 GPS受信機はこれを行うことができますが、私はそれがAPIの時間の何かを公開していないと思います。 – iandotkelly

答えて

1

私は、GPSデータのその部分があなたにさらされていた場合、CoreLocationのものがこれを実行できると考えていました。しかし、それは私を考えさせた。

バックグラウンドでの位置を追跡するなど、特定の小さな理由の1つである必要があります。その副作用として、通常のタイマーでクロックの変化を検出しようとします。 Appleは位置情報を使用していないことと、バックグラウンド処理を利用する理由だけを明らかにしているかもしれないので、Appleはそれを拒否するかもしれない。

ネットワーキングに関係しない解決策はですので、を実装するのがはるかに難しく、私はなぜそれを使用していないのだろうかと思います。

11

CACurrentMediaTime & mach_absolute_time

この質問を見てください:ここであなたを http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreAnimation_functions/Reference/reference.html

iOS: How to measure passed time, independent of clock and time zone changes?

Calculating number of seconds between two points in time, in Cocoa, even when system clock has changed mid-way

CACurrentMediaTimeはmach_absolute_timeを使用していますここで http://www.informit.com/blogs/blog.aspx?b=02b4e309-308c-468a-bab1-cebb1404be6a

あなたはmach_absolute_timeに関する詳細な情報を持っている:CACurrentMediaTimeを使用する方法の例を持って、私はそれが確実にユーザーが手動であるかどうかを判断することが可能だとは思わないけれども http://developer.apple.com/library/mac/#qa/qa1398/_index.html http://shiftedbits.org/2008/10/01/mach_absolute_time-on-the-iphone/

+1

mach_absolute_timeはデバイスの再起動時にリセットされます。ユーザーが再起動してチート検出を回避しても問題ありませんが、再起動してもクロックを進んだとフラグを立てても問題ありません。 –

+0

また、Ben Dodsonの素晴らしいブログ記事、http://bendodson.com/weblog/2013/01/29/ca-current-media-time/に基づいて、デバイスが一部のそれはCACurrentMediaTime(それに基づいているのでmach_absolute_timeなので)から再生までの時間は、稼働時間ではなくアクティブなデバイス時間をカウントするだけです。 – stuckj

0

ネットワークにアクセスしなくても時計を前方に向けることができます。私たちはこれが物理的に不可能であることを知っているので、彼らは時計を操作して不正行為をしたと推測できます。

私はこれが何を意味するのは、待ち時間を必要とするアプリを終了させ、時計を前に戻し、アプリを再起動して何でも獲得するアクションアプリを起動する通常のプロセスではない待ってから実際の時刻にクロックを戻しますか?

もしそうなら、@smgambelの提案に基づいて、各起動時に物理的な時間と現在のタイムゾーンを保存し、以前に保存した時間と時間帯と比較することができます。時間がの後ろにあるの時間であり、デバイスのタイムゾーンが変更されていない場合、ユーザはクロックを操作したと見なすことができます。

関連する問題