Устройство IMEI блокировки для планшетов
В моем приложении я использовал блокировку приложения с помощью кода IMEI. Я имею в виду, что при запуске приложение проверяет IMEI устройства и сравнивает его со списком разрешенных устройств. Если устройство находится в списке, пользователь может продолжать работать, в противном случае оно выручает:
public boolean checkIMEI(Activity activity)
{
TelephonyManager tm=(TelephonyManager )activity.getSystemService(Context.TELEPHONY_SERVICE);
if(tm==null)
{
Log.v(TAG, "Can't get telephony service");
new MessageBox(activity, "Can't get telephony service. Forcing shut down!");
return false;
}
//encrypted IMEIs list
String[] vals=activity.getResources().getStringArray(R.array.imeis);
//real device IMEI
String deviceId=tm.getDeviceId();
if(deviceId==null || deviceId.length() < 2)
{
Log.v(TAG, "Looks like emulator - bail out!");
Toast.makeText(activity, "This special version not intended to run in this device!", 5000).show();
return false;
}
boolean valid=false;
for(String val:vals)
{
String imei=Checker.decryptTemp(val); //decrypt IMEIs
if(imei.equalsIgnoreCase(deviceId))
{
valid=true;
break;
}
}
if(!valid)
{
Log.v(TAG, "Invalid device IMEI!");
return false;
}
return true;
}
Проблема с планшетами Android, не оснащенными услугами телефонии. Таким образом, эти устройства не имеют IMEI. На какой идентификатор мне положиться? Mac-адрес или что-то еще? Также каждый раз, когда мне нужно попросить потенциальных пользователей прислать мне свой идентификатор устройства... Как они могут это сделать?
3 ответа
Как я уже писал, использование IMEI для идентификации определенного устройства не очень хорошая идея.
Если пользователь достаточно сообразителен, чтобы запустить APK в симуляторе, он достаточно сообразителен, чтобы декомпилировать его и снять ваш чек.
Более того, на вашем месте я бы предложил больше функциональности зарегистрированным и вошедшим в систему пользователям, а не пытался помешать незарегистрированным пользователям запускать ваше приложение. Нет ничего более раздражающего, чем приложение, которое выходит из строя из-за такой функции безопасности (например, Steam или Windows Live или печально известный Ubisoft "отказ в игре для платных пользователей"). Это только подталкивает людей к пиратству вашего приложения.
Проверка IMEI может быть хорошей идеей, если она предлагается исключительно для телефонов, использующих функциональность телефона, но она зависит от национальных правил. В нескольких странах реестр EIR (реестр идентификаторов оборудования) внедрен в их мобильных сетях. Он проверяет наличие украденных и поддельных IMEI, помеченных серым и черным. Черные пометки imei не могут использовать телефонные функции, серые помечены подозрениями и отслеживаются по закону. Если это так, то использование imei check будет полезным.