Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 防止作弊:它真的是一个移动设备,还是一个模拟器?_Android_Objective C_Ios_Cocoa Touch - Fatal编程技术网

Android 防止作弊:它真的是一个移动设备,还是一个模拟器?

Android 防止作弊:它真的是一个移动设备,还是一个模拟器?,android,objective-c,ios,cocoa-touch,Android,Objective C,Ios,Cocoa Touch,我正在android和iPhone上同时开发一个应用程序。由于我的地理定位应用程序的性质,重要的是信息确实来自手机,而不仅仅是碰巧安装了应用程序的模拟器 我是否可以从设备中提取某种值来确定它是否是模拟器?我不希望用户通过简单地设置自己的lat/long坐标值来欺骗系统。我知道没有什么是万无一失的,但我至少希望尽可能多地消除欺诈行为 我计划有适当的算法来验证接收到的数据,比如跳n。迈尔斯在n。距离上一个位置只有几秒钟的距离,但在某些情况下,这可能会导致误报,特别是在一些机器人身上,你可以神奇地在世

我正在android和iPhone上同时开发一个应用程序。由于我的地理定位应用程序的性质,重要的是信息确实来自手机,而不仅仅是碰巧安装了应用程序的模拟器

我是否可以从设备中提取某种值来确定它是否是模拟器?我不希望用户通过简单地设置自己的lat/long坐标值来欺骗系统。我知道没有什么是万无一失的,但我至少希望尽可能多地消除欺诈行为

我计划有适当的算法来验证接收到的数据,比如跳n。迈尔斯在n。距离上一个位置只有几秒钟的距离,但在某些情况下,这可能会导致误报,特别是在一些机器人身上,你可以神奇地在世界各地移动2英尺


这适用于Android和iOS。两款手机的答案都可以。

您可以使用[UIDevice currentDevice].model获取iOS的当前设备型号。将为您提供可以与之进行比较的可能常量字符串。向下滚动到模型属性以了解更多信息


没有太多的android经验,但是应该可以工作。

对于android,事实证明,考虑到在“开发设置”下允许模拟位置的能力,这比仅仅确定你是否在模拟器上(可以使用上面的Peter链接来完成)要复杂一些(例如,请参见,允许用户设置模拟位置,然后其他应用程序可以使用该位置)

根据您用于检索位置提供程序的方法(例如,使用
LocationManager.getBestProvider()
中的返回值调用
LocationManager.getProvider()
)因此,您可能会使用模拟提供程序。我无法找到任何确定提供程序是否为模拟的方法(例如,LocationProvider没有表示它为模拟的属性,Location没有表示它为假的属性,等等)。但是,您可以做的是读取以确定是否启用了ALLOW_MOCK_位置,并且在这种情况下不允许您的应用程序运行;由于该设置是安全设置之一,因此无法通过编程方式对其进行更改