Я использую SCNetworkReachabilityCreateWithName & SCNetworkReachabilityGetFlags для проверки доступности сети на моем устройстве iOS. Когда я запускаю приложение в симуляторе или запускаю его на устройстве, но подключаю к отладчику, все совершенно круто. Однако, когда я запускаю приложение на тестовом устройстве, но отсоединяюсь от отладчика, у меня происходит сбой. [РЕДАКТИРОВАТЬ: только что понял, я не указал, где: в вызове SCNetworkReachabilityGetFlags] Странно, это не происходит, когда я запускаю проверку в первый раз. Это происходит на второй проверке. И использование try / catch абсолютно ничего не делает.
Крушение происходит немедленно. Там нет задержки, пока происходит асинхронный опрос, и приложение просто тайм-аут. Это немедленно.
Это полностью истекло. Я вообще не понимаю, почему это происходит. Я готовлюсь пойти на конференцию, чтобы продемонстрировать приложение и сопровождающее его веб-приложение. Я планировал пройтись по полу, чтобы показать это. Но теперь я в основном ограничен привязкой своего iPhone / iPod к компьютеру в кабинке.
Есть идеи? Какие-нибудь обходные пути, которые не держат меня подключенным к компьютеру? И какие-нибудь долгосрочные решения, которые решают эту проблему? Я использую этот метод для проверки доступности сети каждый раз, когда выполняю какие-либо действия в сети. Я синхронизирую свои данные с облаком и запускаю эту проверку каждый раз, когда происходит синхронизация. Я чувствую, что это необходимо для информирования пользователя в случае внезапного обрыва сетевого подключения.
Помощь ????
Вот фрагмент кода.
+ (BOOL) networkConnected {
SCNetworkReachabilityFlags flags = 0;
SCNetworkReachabilityRef netReachability;
BOOL retrievedFlags = NO;
BOOL reachable = NO;
netReachability = SCNetworkReachabilityCreateWithName(CFAllocatorGetDefault(), [EXTERNAL_HOST UTF8String]);
@try {
if(netReachability) {
retrievedFlags = SCNetworkReachabilityGetFlags(netReachability, &flags);
CFRelease(netReachability);
}
if(!retrievedFlags || !flags)
reachable = NO;
else
reachable = YES;
} @catch (NSException *ex) {
reachable = NO;
} @finally {
return reachable;
}
}