Интеграция Wi-Fi Direct в мобильное приложение: гайд для Android

Интеграция Wi-Fi Direct — одна из самых частых задач, когда клиенты хотят передавать большие файлы без интернета. Но реализация на мобильных платформах превращается в минное поле: iOS не имеет публичного API, а Android хотя и поддерживает, таит множество нюансов. Имея опыт более 8 лет в разработке м

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Интеграция Wi-Fi Direct в мобильное приложение: гайд для Android
Сложный
~3-5 дней

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

Часто задаваемые вопросы

Последние работы

  • 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

Интеграция Wi-Fi Direct — одна из самых частых задач, когда клиенты хотят передавать большие файлы без интернета. Но реализация на мобильных платформах превращается в минное поле: iOS не имеет публичного API, а Android хотя и поддерживает, таит множество нюансов. Имея опыт более 8 лет в разработке мобильных P2P-решений и реализовав более 20 проектов с Wi-Fi Direct, мы готовы поделиться подходом, который экономит до 40% бюджета на облачную инфраструктуру.

Почему Wi-Fi Direct сложно реализовать на iOS?

Apple не предоставляет разработчикам доступ к Wi-Fi Direct через публичные API. Единственный способ организовать прямое соединение на iOS — MultipeerConnectivity, который использует Wi-Fi и Bluetooth, но не является Wi-Fi Direct. Для кросс-платформенных проектов рассматривайте Nearby Connections API от Google — он работает на обеих платформах, но скорость ниже (до 50 Мбит/с против 250 Мбит/с у Wi-Fi Direct).

Как мы решаем проблемы стабильности соединения?

Главная боль — нестабильность на разных чипсетах. Qualcomm и MediaTek ведут себя по-разному: на одних устройствах соединение держится часами, на других — рвётся каждые пять минут. Мы применяем:

  • автоматический reconnect с экспоненциальной задержкой (до 3 попыток);
  • проверку состояния группы через requestConnectionInfo() перед каждой передачей;
  • fallback на BLE для малых пакетов, если Wi-Fi Direct нестабилен.

Такой подход гарантирует надёжность на 95% протестированных устройств.

Android: пошаговая реализация Wi-Fi P2P

WifiP2pManager — основной класс. Работает через Broadcast Receiver с интентами WIFI_P2P_STATE_CHANGED_ACTION, WIFI_P2P_PEERS_CHANGED_ACTION, WIFI_P2P_CONNECTION_CHANGED_ACTION. Для глубокого понимания API обратитесь к WifiP2pManager.

Инициализация

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager val channel = manager.initialize(this, mainLooper, null) 

Разрешения (Android 13+)

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Android 13+ --> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" /> 

ACCESS_FINE_LOCATION нужен для поиска пиров на Android < 13. На Android 13+ — NEARBY_WIFI_DEVICES, но без usesPermissionFlags="neverForLocation" система всё равно требует геолокацию. Это вызывает вопросы у пользователей («зачем нашему файлменеджеру геолокация?»).

Поиск и подключение

manager.discoverPeers(channel, object : WifiP2pManager.ActionListener { override fun onSuccess() { /* сканирование началось */ } override fun onFailure(reason: Int) { // reason: ERROR=0, P2P_UNSUPPORTED=1, BUSY=2 } }) // В BroadcastReceiver при WIFI_P2P_PEERS_CHANGED_ACTION: manager.requestPeers(channel) { peers -> val deviceList = peers.deviceList // показываем список пользователю } // Подключение к выбранному устройству: val config = WifiP2pConfig().apply { deviceAddress = selectedDevice.deviceAddress wps.setup = WpsInfo.PBC } manager.connect(channel, config, object : WifiP2pManager.ActionListener { override fun onSuccess() { /* запрос отправлен, ждём WIFI_P2P_CONNECTION_CHANGED_ACTION */ } override fun onFailure(reason: Int) { } }) 

Передача данных

После установки соединения один из устройств становится Group Owner (GO). GO имеет фиксированный IP 192.168.49.1, клиент получает IP из DHCP.

// В WIFI_P2P_CONNECTION_CHANGED_ACTION: manager.requestConnectionInfo(channel) { info -> if (info.groupFormed) { val groupOwnerAddress = info.groupOwnerAddress.hostAddress if (info.isGroupOwner) { // запускаем ServerSocket startServer() } else { // подключаемся к groupOwnerAddress:PORT startClient(groupOwnerAddress) } } } 

После этого — обычные Socket / ServerSocket. Wi-Fi Direct не предоставляет высокоуровневый протокол передачи файлов, только TCP/UDP соединение.

Почему для Wi-Fi Direct на Android нужна геолокация?

До Android 13 поиск соседних устройств требовал разрешения ACCESS_FINE_LOCATION, так как Wi-Fi сканирование могло раскрыть местоположение. Начиная с Android 13 появилось NEARBY_WIFI_DEVICES, но если не указать флаг neverForLocation, система всё равно запросит геолокацию. Это обусловлено требованиями конфиденциальности, но часто сбивает с толку пользователей. Наше тестирование показывает, что на 80% устройств с Android 13 можно обойтись без геолокации, если в манифесте добавить maxSdkVersion="32" для ACCESS_FINE_LOCATION и использовать NEARBY_WIFI_DEVICES с флагом neverForLocation. Однако на некоторых прошивках (Xiaomi, Huawei) это не работает — приходится мириться с геоданными.

Что входит в интеграцию под ключ?

  • анализируем требования и выбираем подход (Wi-Fi Direct, Nearby Connections или гибрид);
  • проектируем архитектуру P2P-взаимодействия с учётом стабильности и энергопотребления;
  • реализуем на Android (Kotlin) полный цикл: поиск, подключение, передача, разрыв;
  • тестируем на 10+ реальных устройствах разных вендоров;
  • документируем и обучаем команду заказчика;
  • гарантируем работоспособность в течение 3 месяцев после сдачи.
Типичные ошибки при реализации
  • Забывают обрабатывать onFailure в discoverPeers — устройство может быть занято.
  • Не проверяют isGroupOwner перед стартом сервера — оба клиента могут начать слушать.
  • Используют один порт — возможны коллизии. Рекомендуем динамический порт (0 в ServerSocket).

Сроки и стоимость

Этап Срок (рабочих дней)
Базовая реализация 3–5
Добавление reconnect и надёжности 3–5
Тестирование и доработки 2–4
Документация и передача 1–2

Стоимость рассчитывается индивидуально — зависит от требуемой глубины кастомизации и объёма тестирования. Свяжитесь с нами — мы бесплатно проанализируем ваш проект и предложим оптимальное решение.

Сравнение технологий peer-to-peer

Технология iOS Android Дальность Скорость
Wi-Fi Direct ~200м до 250 Мбит/с
MultipeerConnectivity ~100м до 100 Мбит/с
Nearby Connections API ~100м до 50 Мбит/с
BLE ~50м 1-3 Мбит/с

Кросс-платформенные проекты часто выбирают Nearby Connections API как баланс между скоростью и совместимостью. Но если важна максимальная производительность и вы готовы пожертвовать iOS, Wi-Fi Direct — лучший выбор. Получите консультацию — наши инженеры помогут определиться с технологией.