【问题标题】:What is the best to way to find out if an android device is real?找出Android设备是否真实的最佳方法是什么?
【发布时间】:2014-02-07 06:12:38
【问题描述】:

我们正在尝试使用某种优惠券作为奖励,只要在设备上完成新安装,就可以在实体店兑换该优惠券。我们对此进行了一些试验,并验证它是基于 IMEI 和 IMSI 的新设备。但我们发现人们在一些模拟器上这样做,这些 ID 可以被操纵并模仿新设备。如何避免这种情况?

我们目前是这样使用的

    TelephonyManager m_telephonyManager = (TelephonyManager) context.getSystemService(serviceName);
    String IMEI, IMSI;
    IMEI = m_telephonyManager.getDeviceId();
    IMSI = m_telephonyManager.getSubscriberId();
    return IMEI + ":" + IMSI;

我确信有一种方法,因为驱动安装的广告网络正确地为每个设备分配一次。

【问题讨论】:

标签: android


【解决方案1】:

您可以使用这些方法中的任何一种来检查您的应用程序是否在模拟器中运行。但这些方法并非 100 % 可靠,但这些方法的组合可能会更好地帮助您。

方法 1

if (android.os.Build.MODEL.equals(“sdk”)) {
   // emulator
} else {
   //not emulator
}

方法 2

尝试将您的清单设置为依赖于模拟器通常不支持的某些硬件。例如:

<uses-feature android:name="android.hardware.sensor.accelerometer" 
              android:required="true" />

方法 3

尝试使用

Build.FINGERPRINT.contains("generic")

这些是查找应用程序是否在模拟器中运行的一些方法。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    让他们在商店的设备上显示应用 + 生成的代码。这似乎是您当前方案防水的唯一方法。或者只是不使用设备 ID 作为标识,而是想出一些其他的促销方案;)

    【讨论】:

      【解决方案3】:

      这不是对您问题的回答,而是关于如何获得唯一 ID 的建议。使用用户手机号码作为唯一 ID。 问题是获取电话号码并非易事,如下所示:

      MSISDN : Is it a SIM Card Data? Why all The Provided Function (from Blackberry and Android) to fetch MSISDN not reliable?

      因此,您可以做的是实现一个基本的握手过程,用户通过该过程输入他们的电话号码,然后将其发送到您的服务器。然后,您的服务器向给定号码发送一条短信,您的应用程序可以收听该号码。收到确认文本后,将向服务器发送一条成功消息,并且您知道该电话号码是有效且唯一的。

      希望这是有道理的,祝您的项目一切顺利。

      【讨论】:

        猜你喜欢
        • 2013-02-01
        • 2015-11-15
        • 1970-01-01
        • 2019-01-26
        • 1970-01-01
        • 2013-11-21
        • 1970-01-01
        相关资源
        最近更新 更多