Я создаю приложение для iOS с использованием MultipeerConnectivity для локальной одноранговой сети. Запрос на разрешение локальной сети не появляется, и я получаю ошибки -72008 (NSNetServicesErrorDomain). Проблема:
// 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. Я проверил, что оба присутствуют, но приглашение по-прежнему не появляется.
Я создаю приложение для iOS с использованием MultipeerConnectivity для локальной одноранговой сети. Запрос на разрешение локальной сети не появляется, и я получаю ошибки -72008 (NSNetServicesErrorDomain). [b]Проблема:[/b] [list] [*]При использовании MultipeerConnectivity ([code]MCNearbyServiceAdvertiser[/code] или MCNearbyServiceBrowser), iOS должен отобразить запрос разрешения: «Приложение хочет найти устройства в вашей локальной сети и подключиться к ним». [*]Приглашение никогда не появляется [*]Сетевые операции завершаются ошибкой: ошибка NSNetServicesErrorDomain -72008 [*]Приложение не отображается в меню «Настройки» > «Конфиденциальность и безопасность» > «Локальная сеть». [/list] [b]Что я проверил:[/b] [list] [*][code]NSLocalNetworkUsageDescription[/code] присутствует в Info.plist [*][code]NSBonjourServicesМассив [/code] присутствует с правильным типом службы: _kaunwho._tcp [*]Тип службы соответствует тому, что использует MultipeerConnectivity (без суффикса _tcp в коде: "kaunwho") [*]Info.plist содержит оба ключа после сборки: [code]NSLocalNetworkUsageDescription KaunWho uses local networking to connect nearby devices for multiplayer gameplay. NSBonjourServices
_kaunwho._tcp
[/code]
[/list] [b]Код:[/b] [code]// 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() [/code] [b]Что я пробовал:[/b] [list] [*]Проверенный Info.plist содержит NSBonjourServices (подтверждено с помощью plutil -p) [*]Удалил и переустановил приложение полностью [*]Очистил папку сборки и пересобрал [*]Проверено на моем iPhone 13 и также на iPhone 17 Pro (не только симулятор). [*]Убедилось, что приложение использует MultipeerConnectivity при тестировании (нажатие на кнопки, запускающие startAdvertisingPeer()). [/list] [b]Среда:[/b] [list] [*]iOS 18.0+ [*]Xcode 26.0 [*]Приложение SwiftUI [*]MultipeerConnectivity Framework [/list] [b]Вопросы:[/b] [list] [*]Требуется ли что-то еще для запуска запроса на разрешение? [*]Должен ли запрос на разрешение появляться автоматически при первом использовании или мне нужно запросить его явно? [*]Может ли быть предыдущий отказ (даже если он не виден) предотвратить появление приглашения? [*]Существуют ли какие-либо известные проблемы с MultipeerConnectivity и iOS 18, которые могут повлиять на это? [/list] [b]Дополнительный контекст:[/b] Согласно документации Apple, требуются как NSLocalNetworkUsageDescription, так и NSBonjourServices. Я проверил, что оба присутствуют, но приглашение по-прежнему не появляется.