Flutter Android (Xiaomi/MIUI): SocketException Не удалось найти хост для имени хоста .local mDNSAndroid

Форум для тех, кто программирует под Android
Anonymous
Flutter Android (Xiaomi/MIUI): SocketException Не удалось найти хост для имени хоста .local mDNS

Сообщение Anonymous »

Я создаю приложение Flutter, которое обнаруживает локальное устройство через Wi-Fi и вызывает его локальный REST API.
На Xiaomi/Redmi (MIUI) локальный режим не работает с разрешением DNS для локальных имен хостов, в то время как тот же процесс работает на других устройствах Android.
Я могу заставить его работать с использованием прямого IP, но я хочу использовать имя хоста, потому что IP может измениться (изменения DHCP/сети).
/>Журнал ошибок:

Код: Выделить всё

[RESPONSE] [REST REQUEST] ************* ERROR *************
{
"method": "GET",
"url": "https://type-macaddres.local/...",
"stage": "connection",
"error": "SocketException: Failed host lookup: 'type-macaddres.local' (OS Error: No address associated with hostname, errno = 7)",
"mappedError": {
"url": "https://type-macaddres.local/...",
"statusCode": 503,
"description": "Failed host lookup: 'type-macaddres.local'",
"type": "ConnectionError",
"errors": {
"code": 503,
"message": "Failed host lookup: 'type-macaddres.local'"
}
}
}
*********************************
Что я использую во Flutter:
  • nsd-пакет для обнаружения служб (DNS-SD/mDNS), тип службы, например _name_ Secondaname._tcp
  • dart:io HttpClient для запросов REST
  • connectivity_plus для подключения состояние
  • Обнаружение с помощью autoResolve: true и ipLookupType: IpLookupType.any
Пример вызова обнаружения:

Код: Выделить всё

final discovery = await startDiscovery(
'_name_secondaname._tcp.',
autoResolve: true,
ipLookupType: IpLookupType.any,
);
Контекст:
  • Приложение Flutter (Android)
  • Запрос к http(s)://.local/...
  • Не работает только на Xiaomi/Redmi (MIUI)
Уже проверено:
  • Разрешения Android: INTERNET, ACCESS_NETWORK_STATE, CHANGE_WIFI_MULTICAST_STATE
  • Частный DNS вкл./выкл.
  • Ограничения батареи/данных MIUI отключены
  • ipLookupType: любой
Вопросы:
  • Известно ли это ограничение MIUI при разрешении локальных имен хостов из Flutter/Dart HttpClient?
  • Является ли использование прямого IP единственным надежным подходом на Xiaomi?
  • Какой-нибудь обходной путь, специфичный для Xiaomi, который надежно исправляет разрешение имени хоста mDNS?
ПРИМЕЧАНИЕ. У меня есть все разрешения манифеста, и я сделал все, что мог найти, но это не сработало.
ПРИМЕЧАНИЕ № 2. Я тестирую на реальном устройстве (Xiaomi Redmi 8T)

Вернуться в «Android»