Реалізація age-gate (перевірка віку) в мобільному додатку
Age-gate — бар'єр перед контентом з віковим обмеженням: алкоголь, тютюн, азартні гри, контент 18+. Технічно, мінімальний варіант (введи рік народження) — це не верифікація, а декларація. Реальна перевірка вимагає інтеграції з верифікаційним сервісом або біометрії.
Рівні верифікації
Декларативна age-gate — користувач вводить дату народження або вибирає "мені є 18+". Достатньо для більшості додатків у категоріях Entertainment та Food & Drink. Не захищає від дітей, які знають як правильно відповісти, але знімає юридичну відповідальність розробника.
Верифікація через документ — KYC-легкий варіант: користувач фотографує паспорт або ID, сервіс (Sumsub, Onfido) витягує дату народження та підтверджує вік. Без зберігання документа на сервері, лише результат перевірки.
Age Estimation з фото — ML-модель оцінює вік з selfie. Не є юридично надійною верифікацією, але використовується як перший бар'єр. AWS Rekognition та Azure Face API надають EstimatedAge у діапазоні.
Для більшості додатків у Росії достатньо декларативної age-gate — вона відповідає вимогам 436-ФЗ про інформаційний захист дітей при наявності користувацької угоди.
Реалізація
На Android перевіряємо та зберігаємо статус верифікації:
object AgeGateManager {
private const val KEY_AGE_VERIFIED = "age_verified"
fun isVerified(context: Context): Boolean {
return EncryptedPreferences.getBoolean(context, KEY_AGE_VERIFIED, false)
}
fun markVerified(context: Context, birthDate: LocalDate) {
val age = ChronoUnit.YEARS.between(birthDate, LocalDate.now())
require(age >= 18) { "Under 18" }
EncryptedPreferences.putBoolean(context, KEY_AGE_VERIFIED, true)
}
}
Статус не скидаємо при перезапуску — користувач не повинен підтверджувати вік щоразу. Скидаємо лише при logout або переустановці.
Навігаційний guard на Jetpack Navigation або на рівні Activity:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!AgeGateManager.isVerified(this)) {
startActivity(Intent(this, AgeGateActivity::class.java))
finish()
return
}
setContent { MainScreen() }
}
Важливо для App Store: Apple та Google мають власні вимоги до age-gate. Додатки з контентом 18+ повинні бути правильно категоризовані у App Store Connect (age rating 17+) та Google Play (Content Rating "Adults only"). Без цього — відхилення при ревью.
Age-gate з декларативною перевіркою — 3–5 днів розробки. З ML-сервісом або KYC-верифікацією — 2–4 тижні. Вартість розраховується індивідуально.







