2014-02-13 3 views
2

Я хочу, чтобы мое приложение работало в определенном регионе, например, в США.Ограничить приложение для Android в определенном регионе

Мы можем ограничить распространение приложения с игрового рынка, но я обнаружил, что есть некоторые хаки для установки этих приложений.

Я должен как-то ограничить использование в приложении.

Для этого я могу получить GPS-местоположение пользователя и использовать API геокодирования Google для первого запуска. Но что, если пользователь отправится в какой-нибудь другой регион?

Мне нужно будет использовать прослушиватель изменений местоположения, чтобы удовлетворить этот сценарий, но это позволит разрядить аккумулятор.

Если я иду на часовой пояс устройства, Пользователь может его изменить.

Есть ли какая-либо другая вещь, которую я могу сделать, чтобы ограничить применение в конкретном регионе?

+0

Возможно, попробуйте фильтровать пользователей с помощью мобильного оператора? например код страны или что-то в этом роде ... – gilonm

ответ

2

Вы также можете проверить сеть пользователь зарегистрирован на с TelephonyManager

У вас есть 2 методы, которые могут быть полезны.

GetNetworkCountryIso

http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkCountryIso()

и

GetSimCountryIso

http://developer.android.com/reference/android/telephony/TelephonyManager.html#getSimCountryIso()


Объяснение


getNetworkCountryIso() даст вам светочувствительности для страны, которую пользователь зарегистрирован на данный момент реализована.
то есть: Если вы из Албании (Аl) и отправился путешествовать в США (нам) это вернет «нас»

getSimCountryIso() даст вам изо для страны, где код страны провайдера Сима. .
то есть: Если вы из Албании (Аl) и отправился путешествовать в США (нам) это вернет «аль»

UPDATE

вы можете интегрировать (если на стороне сервера доступна) http://www.whois.net/ip-address-lookup/, чтобы найти IP-адрес устройства. Вы можете получить такой IP-адрес.

How to get IP address of the device from code?

Благодаря сочетанию всех этих функций (Wi-Fi, сетевой провайдер, IP, GPS, Google Play регионы), вы можете уменьшить много ограничений на использование вашего приложения.С другой стороны, если пользователь набирает достаточный уровень, чтобы подделать IP-адрес с помощью прокси-сервера, не включает Wi-Fi/GPS и не имеет SIM-карты, делать нечего.


Надеюсь, что это помогает :)

+0

Это действительно обнадеживает, но что делать, если у пользователя нет установленной SIM-карты? –

+0

@SyedMuhammadUmair обновил мой ответ, извините, что вам нечего делать. – axierjhtjz

+0

Это будет очень редкий случай, но для этого мы можем проверить наличие установленных приложений для обнаружения любой известной VPN :) –

0

В продолжение к моему комментарию, вы могли бы пойти по этим линиям фильтрации пользователей по коду страны.

Проблема. Только некоторые носители сохраняют номер телефона на реальной SIM-карте. Если да, то вы сможете получить его с помощью

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
    String mPhoneNumber = tMgr.getLine1Number(); 

Чтобы избежать случаев тех перевозчиков, которые не хранят фактический номер на SIM-карте - нет никакого способа, чтобы получить номер видеть его не хранится на телефоне. Итак, что бы я сделал, просто на первом запуске приложения, попросите пользователя ввести полный номер телефона (включая код страны) - и сохраните его в SharedPrefs. Затем вы узнаете, запускать приложение или нет.

Удачи, надеюсь, это помогло!

+0

Запрос пользователя на его номер позволит ему подделать его регион –

+0

Правда, но вероятность того, что он даст в поддельном номере, невысока. – gilonm

+0

хорошо, шансы установить приложение с ограничением распространения с помощью взлома намного ниже вашего, но я готов удовлетворить максимальные возможности. –

Смежные вопросы