Запрос на разрешение локальной сети iOS не отображается для MultipeerConnectivity, несмотря на NSBonjourServices в Info.IOS

Программируем под IOS
Ответить
Anonymous
 Запрос на разрешение локальной сети iOS не отображается для MultipeerConnectivity, несмотря на NSBonjourServices в Info.

Сообщение Anonymous »

Я создаю приложение для iOS с использованием MultipeerConnectivity для локальной одноранговой сети. Запрос на разрешение локальной сети не появляется, и я получаю ошибки -72008 (NSNetServicesErrorDomain).
Проблема:
  • При использовании MultipeerConnectivity (

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

    MCNearbyServiceAdvertiser
    или MCNearbyServiceBrowser), iOS должен отобразить запрос разрешения: «Приложение хочет найти устройства в вашей локальной сети и подключиться к ним».
  • Приглашение никогда не появляется
  • Сетевые операции завершаются ошибкой: ошибка NSNetServicesErrorDomain -72008
  • Приложение не отображается в меню «Настройки» > «Конфиденциальность и безопасность» > «Локальная сеть».
Что я проверил:
  • Код: Выделить всё

    NSLocalNetworkUsageDescription
    присутствует в Info.plist
  • Код: Выделить всё

    NSBonjourServicesМассив 
    присутствует с правильным типом службы: _kaunwho._tcp
  • Тип службы соответствует тому, что использует MultipeerConnectivity (без суффикса _tcp в коде: "kaunwho")
  • Info.plist содержит оба ключа после сборки:

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

    NSLocalNetworkUsageDescription
    KaunWho uses local networking to connect nearby devices for multiplayer gameplay.
    NSBonjourServices
    
    _kaunwho._tcp
    
    
Код:

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

// Service type used in code
private let serviceType = "kaunwho"  // 1-15 chars, lowercase, alphanumeric + hyphens

// Starting advertiser
advertiser = MCNearbyServiceAdvertiser(peer: myPeerID, discoveryInfo: nil, serviceType: serviceType)
advertiser?.delegate = self
advertiser?.startAdvertisingPeer()
Что я пробовал:
  • Проверенный Info.plist содержит NSBonjourServices (подтверждено с помощью plutil -p)
  • Удалил и переустановил приложение полностью
  • Очистил папку сборки и пересобрал
  • Проверено на моем iPhone 13 и также на iPhone 17 Pro (не только симулятор).
  • Убедилось, что приложение использует MultipeerConnectivity при тестировании (нажатие на кнопки, запускающие startAdvertisingPeer()).
Среда:
  • iOS 18.0+
  • Xcode 26.0
  • Приложение SwiftUI
  • MultipeerConnectivity Framework
Вопросы:
  • Требуется ли что-то еще для запуска запроса на разрешение?
  • Должен ли запрос на разрешение появляться автоматически при первом использовании или мне нужно запросить его явно?
  • Может ли быть предыдущий отказ (даже если он не виден) предотвратить появление приглашения?
  • Существуют ли какие-либо известные проблемы с MultipeerConnectivity и iOS 18, которые могут повлиять на это?
Дополнительный контекст:
Согласно документации Apple, требуются как NSLocalNetworkUsageDescription, так и NSBonjourServices. Я проверил, что оба присутствуют, но приглашение по-прежнему не появляется.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ctivity-de
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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