У меня есть приложение, которое необходимо подключить к определенной точке доступа. Этот AP не подключен к Интернету. когда я изменяю сети в «настройках» на эту новую точку доступа, я вижу, что получил IP-адрес в течение нескольких секунд, но для появления символа wifi в строке состояния требуется 60–70 секунд. Вернувшись в свое приложение, я не могу подключиться к точке доступа, пока не появится этот символ. как только оно появляется, соединение работает отлично, но 60 секунд - это долгое время для ожидания пользователя. Я использую NSStreamManager для связи с AP.
Я не понимаю, почему я не могу подключиться, как только настройки показывают IP-адрес. Я знаю, что Apple не позволяет контролировать настройки сети в приложении. любые предложения будут оценены.
Дополнительная информация:
Чтобы понять проблему, я добавил цикл таймера, который запускается, как только я открываю приложение, после перехода на новую сеть Wi-Fi. он сообщает о состоянии доступности (через класс доступности Apple) и пытается получить SSID. если эти два метода завершаются успешно, то он отправляет сообщение JSON на точку доступа с помощью streamManager, если нет, он снова вызывает себя через одну секунду. Разъем доступен и SSID читается, в самом первом цикле (менее 1 секунды), НО все еще требуется диспетчеру потоков баланс 60 секунд для завершения. Я не верю, что проблема на стороне AP, так как версия приложения для Android не имеет проблем с подключением.
-(BOOL)didConnect{
NSString *ssidString=[self.serverCommManager fetchSSIDInfo];
NSString *ssidStart=[ssidString substringToIndex:5];
NSLog(@"****:didConnect ssidStart=%@ ",ssidStart);
if([ssidStart isEqualToString:@"Ppppp"]){
NSLog(@"****:didConnect isEqual=TRUE");
self.streamManager = [[NSStreamManager alloc] initWithDelegate:self];
[self.streamManager connectToHost:PlugHostName onPort:PlugPort withMessage: [JSONQuery queryIsPlug]];
[self removeWaitView];
return YES;
}else{
NSLog(@"****:PlugSetupTVC didConnect isEqual=FALSE");
[self startTimingWithInterval:1];
return NO;
}
}