2011-06-16 12 views
1

私はアンドロイドとiPhoneの両方で同時にアプリケーションを開発しています。私のジオロケーションアプリケーションの性質上、アプリケーションがインストールされているエミュレータだけでなく、電話からの情報がであることが重要です。詐欺師を防ぐ:実際にはモバイルデバイスですか、それともエミュレータですか?

エミュレータがあるかどうかを判断するためにデバイスからプルできる値はありますか?私は、ユーザーが緯度/経度座標のために独自の値を設定するだけで、システムを不正行為しないようにしたい。私は何も愚かな証拠ではないことを知っていますが、できるだけ多くの詐欺を排除したいと思っています。

ジャンプするなど、受信するデータを検証するアルゴリズムを用意する予定です。 nマイル。あなたの最後の場所から2〜3秒ですが、これはいくつかの状況で誤検知を引き起こす可能性があります。特に、世界中の2フィートの場所に魔法のように配置できるいくつかのアンドロイドでは、

これはAndroidとiOSの両方に適用されます。いずれの電話機の応答も問題ありません。

答えて

3

[UIDevice currentDevice] .modelを使用すると、iOSの現在のデバイスモデルを取得できます。 UIDevice class referenceは、比較可能な定数文字列を提供します。詳細については、モデルプロパティまでスクロールしてください。

アンドロイドの経験はあまりありませんが、thisはうまくいきます。

0

Androidの場合、「開発の設定」の下で、あなたがエミュレーターを使用しているかどうか(上記のPeterのリンクを使用して行うことができます)モックロケーションを許可します(例えば、this appを参照してください。ユーザーはモックの場所を設定し、他のアプリで利用できるようになります)。

ロケーションプロバイダを取得するために使用する方法(LocationManager.getBestProvider()の戻り値を使用してLocationManager.getProvider()を呼び出すなど)によっては、モックプロバイダを使用することになります。私はプロバイダがMockかどうかを判断するための決定的な方法を見つけることができませんでした(例えば、Mockであることを示すLocationProviderのプロパティ、それが偽物であることを示すLocationのプロパティなどはありません)。しかし、あなたができることは、Secure Settingsを読んで、ALLOW_MOCK_LOCATIONが有効かどうかを判断し、あなたのアプリがこの場合には機能しないようにします。設定はセキュリティで保護された設定の1つで、プログラムで変更する方法はありません。

関連する問題