Предотвратить злоупотребление продвижением, запретив регистрацию на том же устройстве от пользователя
Я разрабатываю приложение, которое предлагает скидки для новых зарегистрированных пользователей. Я хочу, чтобы пользователи не злоупотребляли этим путем запрета пользователям регистрировать другую учетную запись на своем устройстве. API, который я использую, уже проверяет, существует ли уже электронная почта и контактный номер (куда отправляется проверочный код), и предотвращает регистрацию. Я также использую UUID устройства и сохраняю его на сервере, чтобы проверить, зарегистрировался ли кто-либо с этого устройства.
Я провел некоторые исследования для iOS, и вот что я придумал:
- DeviceCheck API можно использовать на iOS 11+.
- UDID устарела.
- IDFA может быть сброшен пользователем.
- UUID можно изменить после удаления приложения или сброса пользователем своего устройства.
Каков наилучший способ избежать злоупотребления этой бизнес-логикой пользователем?
2 ответа
Вы можете использовать identifierForVendor и хранить на своем сервере. Так что вы можете проверить с ним и предотвратить несколько регистраций на одном устройстве.
Я столкнулся с той же проблемой 2 года назад, я решил проблему, сохранив значение в цепочке для ключей.
Я использовал ниже библиотеку для хранения значения в цепочке для ключей.
Ссылка: класс оболочки брелка
Пример кода для хранения UUID на устройстве:
let deviceId = UIDevice.currentDevice().identifierForVendor?.UUIDString ?? ""
// Saving Id in keyChain
KeychainWrapper.defaultKeychainWrapper().setString(deviceId, forKey: "CurrentDeviceId")
Чтение данных из цепочки для ключей.
let previousDeviceId = KeychainWrapper.defaultKeychainWrapper().stringForKey("CurrentDeviceId")
если previousDeviceId
значение nil or blank
затем приложение устанавливается на устройство в первый раз, иначе ваше приложение было установлено на устройство более одного раза.