Szukałem, ale nie widzę podobnego pytania.Osiągalność czasami kończy się niepowodzeniem, nawet jeśli mamy połączenie z Internetem
Dodałem metodę sprawdzania połączenia internetowego według przykładu Dostępności. Działa przez większość czasu, ale gdy jest zainstalowany na iPhonie, często kończy się niepowodzeniem, nawet jeśli mam połączenie z Internetem (tylko wtedy, gdy na 3G/EDGE - WiFi jest OK).
Zasadniczo poniższy kod zwraca NO.
Po przełączeniu się do innej aplikacji, powiedzmy Poczta lub Safari, i połącz, a następnie przełącz się z powrotem do aplikacji, kod wskazuje, że internet jest osiągalny. Wygląda na to, że Kinda potrzebuje "szturchnięcia".
Ktoś to widział? Jakieś pomysły?
Dziękujemy James
+ (BOOL) doWeHaveInternetConnection{
BOOL success;
// google should always be up right?!
const char *host_name = [@"google.com" cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
BOOL isAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
if (isAvailable) {
NSLog(@"Google is reachable: %d", flags);
}else{
NSLog(@"Google is unreachable");
}
return isAvailable;
}
Przepraszam, jestem trochę noob. Dodałem przykładowe klasy dostępności do mojego projektu, ale nie mogę się skompilować. \t Osiągalność * hostReach = [[osiągalność osiągalnościWithHostName: @ "www.apple.com"] zatrzymaj]; Nie działa. Nie można znaleźć metody osiągalnościWithHostName. będę szczypanie ... – stoutyhk
to działa: + (Bool) doWeHaveInternetConnection2 { \t \t if ([[osiągalności sharedReachability] internetConnectionStatus] == NotReachable) { \t \t powrót NO; \t} \t inny \t { \t \t powrotu TAK; \t} \t } – stoutyhk
Ten kod zawsze daje "NotConnected" mimo, że jest podłączony. ale po przejściu do "osiągniętej metody" daje ci właściwy status.więc jak uzyskać poprawny status na pierwszym miejscu? – Nnp