Інтеграція DaData для підказок адрес у мобільних додатках

При автодоповненні адрес у мобільних додатках для Росії Google Places часто помиляється на корпусах, будовах та СНТ. Типовий кейс: клієнт логістичної компанії втрачав 3–5% замовлень через некоректну адресу під час оформлення. Після впровадження DaData кількість помилок скоротилася в 4 рази. Ще один

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція DaData для підказок адрес у мобільних додатках
Простий
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

При автодоповненні адрес у мобільних додатках для Росії Google Places часто помиляється на корпусах, будовах та СНТ. Типовий кейс: клієнт логістичної компанії втрачав 3–5% замовлень через некоректну адресу під час оформлення. Після впровадження DaData кількість помилок скоротилася в 4 рази. Ще один приклад: інтернет-магазин знизив повернення через невірну адресу з 12% до 2% за місяць. DaData — стандарт де-факто: база на основі ФІАС та КЛАДР покриває 99% адрес. Ми впроваджуємо DaData в iOS, Android та Flutter — з дебаунсом, кешуванням та контролем квот. Маємо досвід впровадження DaData для логістики, доставки та ритейлу — понад 80 проектів. Це дозволило клієнтам скоротити кількість помилок введення адрес у 3–4 рази та прискорити оформлення замовлень.

Чому DaData краще Google Places для Росії?

Порівняємо за ключовими параметрами:

Критерій DaData Google Places Autocomplete
База адрес ФІАС/КЛАДР, включає корпуси, будови, СНТ OpenStreetMap + Google Maps, часто неповні
Геокодування POST /geolocate з radius_meters Reverse Geocoding, неточний для РФ
Швидкість відповіді 100–200 мс 200–400 мс
Квота безкоштовно 10 000 запитів/день 150 000 запитів/міс (Android)
Вартість за 1000 запитів від $2 (платні тарифи) від $5 (Places API)

DaData виграє за точністю для російських адрес у 2–3 рази — менше користувацьких помилок та відмов. Продуктивність DaData в 2 рази вища за Google Places. Додатковий плюс — геокодування з прив'язкою до контуру будівлі, а не до центру вулиці.

Ми спеціалізуємося на інтеграції DaData в мобільні додатки (iOS, Android, Flutter). Використовуємо Swift Combine, Kotlin Retrofit та Flutter Dio. Реалізуємо автодоповнення адрес, геокодування та стандартизацію. Порівняння DaData з Google Places показує перевагу 2-3 рази. Наш досвід впровадження DaData — понад 80 проектів.

Інтеграція покроково:

  1. Отримайте API-ключ на dadata.ru.
  2. Налаштуйте HTTP-клієнт з авторизацією.
  3. Реалізуйте дебаунс запитів (300 мс).
  4. Створіть UI-компонент автодоповнення.
  5. Обробіть вибір адреси та збережіть координати. Ці кроки однакові для всіх платформ, з незначними відмінностями в коді.

Що ми інтегруємо

Основний ендпоінт — POST https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address. Тіло запиту — JSON з полем query (введений рядок) та опціональним locations для обмеження за регіоном. Відповідь — масив suggestions, кожен з value, data.geo_lat, data.geo_lon, data.house, data.street, data.city_with_type. Другий ендпоінт — геокодування за координатами: POST .../geolocate/address з lat/lon та radius_meters. Використовуємо як fallback до Google Reverse Geocoding. DaData також дозволяє стандартизувати адреси — привести їх до єдиного формату ФІАС. Це корисно для баз даних та звітності.

Реалізація DaData на iOS, Android та Flutter

iOS

Створюємо DaDataService з URLSession або Alamofire. Авторизація через заголовок Authorization: Token . Ключ зберігаємо в xcconfig — не хардкодимо в коді. Підказки показуємо в UITableView під текстовим полем. Запити дебаунсимо через Combine: searchSubject.debounce(for: .milliseconds(300), scheduler: RunLoop.main). Без дебаунса при швидкому введенні надсилається запит на кожен символ.

Код для iOS (Swift)
struct DaDataSuggestion: Decodable { let value: String let data: DaDataAddress } struct DaDataAddress: Decodable { let geoLat: String? let geoLon: String? let city: String? let street: String? let house: String? enum CodingKeys: String, CodingKey { case geoLat = "geo_lat" case geoLon = "geo_lon" case city, street, house } } 

Важливо: geo_lat та geo_lon приходять як String, не Double. Конвертуємо через Double(geoLat ?? "") з перевіркою на nil.

Android

Retrofit-інтерфейс з @POST та @Header("Authorization"). Корутина в ViewModel, StateFlow<List<DaDataSuggestion>> для UI. Дебаунс через Flow.debounce(300) в collectLatest. В compose-проекті LazyColumn під TextField з DropdownMenuItem. При виборі підказки прибираємо фокус через LocalFocusManager.current.clearFocus() та ховаємо клавіатуру через LocalSoftwareKeyboardController.

Flutter

Пакета під DaData немає — пишемо свій DaDataRepository з Dio. Підказки віддаємо через StreamController з дебаунсом Timer(Duration(milliseconds: 300)). Для UI — ListView.builder в Overlay або пакет flutter_typeahead з кастомним suggestionsCallback.

Коли потрібна міграція з Google Places?

Якщо поточний додаток вже використовує Google Places Autocomplete, заміна на DaData — це заміна одного HTTP-запиту на інший, але з іншою моделлю даних. Ми адаптуємо існуючий код під відповідь DaData, зберігаючи логіку відображення та вибору адреси. Типовий кейс: клієнт з 50 000 щомісячних запитів платив $250 за Google Places, а з DaData — $100. Термін міграції — 1 день на платформу.

Як контролювати квоти?

Безкоштовний тариф DaData — 10 000 запитів/день. Для комерційних проектів рекомендуємо платний план. Налаштовуємо:

  • Мінімальна довжина запиту — 3 символи (не надсилаємо запити на "М")
  • Дебаунс 300 мс — виключаємо зайві виклики при швидкому введенні
  • Кешування результатів: повторні запити ідентичного рядка не йдуть у мережу

Це знижує кількість запитів до 40% від числа натискань клавіш. Контроль реалізовано на рівні сервісу та UI. Наприклад, для проекту з 100 000 запитів на місяць вартість DaData складе $200.

Порівняння підходів інтеграції за платформами

Параметр iOS Android Flutter
HTTP-клієнт URLSession / Alamofire Retrofit Dio
Дебаунс Combine .debounce Flow.debounce Timer
UI UITableView + делегат LazyColumn ListView / flutter_typeahead
Серіалізація Codable Gson / Moshi json_serializable

Обсяг та терміни робіт

До складу робіт входить:

  • Клієнтський сервіс для iOS/Android/Flutter з авторизацією та дебаунсом
  • UI-компонент автодоповнення (кастомний або адаптований)
  • Обробка вибору адреси та маппінг координат
  • Контроль квот: мінімальна довжина запиту — 3 символи, немає запитів на порожній рядок
  • Документація з інтеграції та код з коментарями — Доступ до репозиторію з кодом — Навчання розробників замовника (1-2 години) — Технічна підтримка на 14 днів після здачі

Інтеграція на одну платформу займає 1–2 дні. Вартість розраховується індивідуально — залежить від складності UI та додаткових вимог (наприклад, геокодування або стандартизація ПІБ). Економія бюджету на геодані після міграції може досягати 60%.

Ми гарантуємо якість інтеграції та надаємо технічну підтримку після впровадження.

Зв'яжіться з нами для аудиту поточного рішення. Замовте інтеграцію DaData та отримайте консультацію з оптимізації бюджету.

Джерело: документація API DaData