Подтвердить что ты не робот

Ограничить (Ограничить) установку приложений на одну учетную запись (с учетом уникальных устройств) на Android

Я опубликовал приложение для Android.

Проблема в том, что если кто-то покупает мое приложение, он может установить его на нескольких устройствах с использованием той же учетной записи.

Могу ли я установить установку на несколько (допустим, 2) уникальных устройств на одну учетную запись?

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

Например, MyBackup Pro разрешает только два уникальных устройства.

Как я могу добиться этого в своем приложении?

4b9b3361

Ответ 1

Google поможет вам в этом.

Эта страница поможет вам настроить ее.

В частности, похоже, что вы хотите добавить DeviceLimiter:

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

LVL поддерживает лицензирование на каждом устройстве, предоставляя DeviceLimiter интерфейс, который объявляет один метод allowDeviceAccess(). Когда LicenseValidator обрабатывает ответ с сервера лицензирования, он вызывает allowDeviceAccess(), передавая строку идентификатора пользователя, извлеченную из Ответ.

Если вы не хотите поддерживать ограничение устройства, работа не требуется - класс LicenseChecker автоматически использует реализацию по умолчанию называемый NullDeviceLimiter. Как следует из названия, NullDeviceLimiter является класс "no-op", метод allowDeviceAccess() просто возвращает LICENSED для всех пользователей и устройств.

Внимание: лицензирование на уровне устройства не рекомендуется для большинства приложений потому что:

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

Исходный код для DeviceLimiter можно найти здесь.

Источник в значительной степени объясняет, как вы могли бы использовать DeviceLimiter для реализации того, что вы хотите:

/* The LICENSED response from the server contains a user identifier unique to
 * the <application, user> pair. The developer can send this identifier
 * to their own server along with some device identifier (a random number
 * generated and stored once per application installation,
 * {@link android.telephony.TelephonyManager#getDeviceId getDeviceId},
 * {@link android.provider.Settings.Secure#ANDROID_ID ANDROID_ID}, etc).
 *
 * The more sources used to identify the device, the harder it will be for an
 * attacker to spoof.

Ответ 2

И ответы Аскербина и Яряна приятно объяснить.

В соответствии с моими знаниями. Его можно управлять двумя способами.

1. Автор Google сам

2. По вашей собственной реализации

Позволяет проверить один за другим,

1. Google Google Self

Ответ Ascorbin объясняет, как его реализовать и как Google управляет им. Так надейтесь, что у вас это получилось. Если нет, то дайте мне знать.

2. По вашей собственной реализации

Если у вас есть собственный сервер, вы можете поместить код, который проверяет установленные приложения. Каждое устройство имеет уникальный номер IMEI, поэтому вы можете легко отслеживать один и тот же номер IMEI и блокировать или разрешать установку приложения или работу приложения.

Примечание. Google позволяет использовать одно и то же приложение на другом устройстве, если устройство настроено на такую ​​же учетную запись. поэтому в этом случае это может быть возможно только путем обнаружения той же учетной записи с другим IMEI или MAC-адресом.

Надеюсь, вы поняли.

Не стесняйтесь комментировать.:)

Ответ 3

Вы можете идентифицировать устройство, например, через MAC-адрес модуля wlan или IMEI (оба могут быть получены через системные службы Android). Затем вы определяете установку с вашим сервером, если сервер отвечает, что этот пользователь/клиент уже установил это на другом устройстве, вы заблокируете приложение и сообщите пользователю, что происходит.