Проблема:
- При использовании MultipeerConnectivity (или MCNearbyServiceBrowser), iOS должен отобразить запрос разрешения: «Приложение хочет найти устройства в вашей локальной сети и подключиться к ним».
Код: Выделить всё
MCNearbyServiceAdvertiser - Приглашение никогда не появляется
- Сетевые операции завершаются ошибкой: ошибка NSNetServicesErrorDomain -72008
- Приложение не отображается в меню «Настройки» > «Конфиденциальность и безопасность» > «Локальная сеть».
- присутствует в Info.plist
Код: Выделить всё
NSLocalNetworkUsageDescription - присутствует с правильным типом службы: _kaunwho._tcp
Код: Выделить всё
NSBonjourServicesМассив - Тип службы соответствует тому, что использует 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. Я проверил, что оба присутствуют, но приглашение по-прежнему не появляется.
У меня есть браузер func (_ браузер: MCNearbyServiceBrowser, DidNotStartBrowsingForPeers error: Error) {....
В обоих методах делегирования я вижу одну и ту же структуру ошибок:
Для рекламодателя (_:didNotStartAdvertisingPeer:): Server не публиковал: errorDict [{ NSNetServicesErrorCode = "-72008"; NSNetServicesErrorDomain = 10; }]
Для браузера: NSNetServiceBrowser не выполнял поиск с ошибкой dict [{ NSNetServicesErrorCode = "-72008"; NSNetServicesErrorDomain = 10; }]
Подробнее здесь: https://stackoverflow.com/questions/798 ... ctivity-de
Мобильная версия