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

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Интеграция Wi-Fi Direct в мобильное приложение
Сложная
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

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

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

Android: Wi-Fi P2P API

WifiP2pManager — основной класс. Работает через Broadcast Receiver с интентами WIFI_P2P_STATE_CHANGED_ACTION, WIFI_P2P_PEERS_CHANGED_ACTION, WIFI_P2P_CONNECTION_CHANGED_ACTION.

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

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 соединения нестабильны на некоторых чипсетах (Qualcomm vs MediaTek ведут себя по-разному). Reconnect при обрыве — обязателен.

Только одно P2P-соединение одновременно. Устройство не может быть подключено к Wi-Fi AP и участвовать в Wi-Fi Direct группе одновременно на большинстве устройств. На Android 10+ это частично изменилось с WifiP2pConfig.Builder.setNetworkName(), но не везде.

iOS. Нативного Wi-Fi Direct нет. Для кросс-платформенного peer-to-peer лучше рассматривать MultipeerConnectivity (iOS-только, через Wi-Fi/Bluetooth), или Nearby Connections API от Google (Android + iOS через единый SDK).

Альтернативы для кросс-платформы

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

Срок интеграции Wi-Fi Direct (Android): 3-5 дней базовой реализации, 1-2 недели с надёжным переподключением и передачей файлов. Стоимость рассчитывается индивидуально.