Как вручную запустить всплывающее окно разрешения на беспроводные данные iOS в коде?

#ios #swift #objective-c #info.plist #multipeer-connectivity

#iOS #быстрый #цель-c #информация.plist #многопозиционная связь

Вопрос:

Я разрабатываю приложение, использующее многопоточность для передачи данных в локальной сети.

Хотя MultipeerConnectivity-это одноранговая сеть, я использую ее как архитектуру сервер-клиент. Сервер рекламирует себя, и клиенты просматривают близлежащие серверы.

Код на стороне сервера выглядит следующим образом

 self.localPeerID = [[MCPeerID alloc] initWithDisplayName:[UIDevice currentDevice].name]; self.mcSession = [[MCSession alloc] initWithPeer:self.localPeerID securityIdentity:nil encryptionPreference:MCEncryptionNone]; self.mcSession.delegate = self;  // The server only advertises itself. self.advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:self.localPeerID discoveryInfo:nil serviceType:@"multipeer"]; self.advertiser.delegate = self; [self.advertiser startAdvertisingPeer];  

и код на стороне клиента выглядит так

 self.localPeerID = [[MCPeerID alloc] initWithDisplayName:[UIDevice currentDevice].name]; self.mcSession = [[MCSession alloc] initWithPeer:self.localPeerID securityIdentity:nil encryptionPreference:MCEncryptionNone]; self.mcSession.delegate = self;  // A client only browses for advertisers. self.browser = [[MCNearbyServiceBrowser alloc] initWithPeer:self.localPeerID serviceType:@"multipeer"]; self.browser.delegate = self; [self.browser startBrowsingForPeers];  

Когда приложение начинает рекламировать или просматривать веб-страницы, iOS будет срабатывать NSLocalNetworkUsageDescription при [self.advertiser startAdvertisingPeer] вызове или [self.browser startBrowsingForPeers] при вызове.

До сих пор все было хорошо. Затем, после того как я нажал » ОК » для вышеуказанного всплывающего окна как на серверном устройстве, так и на клиентском устройстве, только на клиентском устройстве появилось следующее разрешение на передачу беспроводных данных.

However, both the server and the client require to use wireless data to establish the connection. So, when the user first opens the app and choose to be the server, the connection cannot be established since the wireless data permission doesn’t have a chance to show up. The user needs to choose to be the client for the first time, trigger the wireless data permission, allow it, then go back to start a server.

Мой вопрос в том, есть ли способ заранее вручную запустить всплывающее окно разрешения на беспроводные данные iOS? В идеале, когда пользователь впервые открывает приложение, просто появляется разрешение на беспроводные данные (может быть, просто доступ к онлайн-URL?), чтобы оно не появлялось позже, когда пользователь пытается подключиться к другим устройствам. Ответы как в swift, так и в objective-c хороши для меня. Большое спасибо!