Статус достижимости ForLocalWiFi - это ReachableViaWWAN в то время как на WIFI?
Мне нужно определить, подключено ли устройство к WIFI:
reach = [Reachability reachabilityForLocalWiFi];
status = [reach currentReachabilityStatus];
но когда я подключаюсь к WIFI на iPad, статус WWAN, а SIM-карта не вставлена, я собираюсь проверить состояние с SIM-картой.
Кто-нибудь знает причину?
редактировать:
Только что попробовал с SIM-картой, он все еще распознается как ReachableViaWWAN, но фактическое соединение происходит через 3G(сервер разрешает только соединение 3G, WIFI не будет работать), так что я предполагаю, что доступность может изменяться со временем?
3 ответа
Наконец, я понял, что класс Reachability, который я использовал, является частью ASIHTTPRequest, который является модифицированной версией, и он изменен таким образом, что метод переписывается, но старый метод (с той же сигнатурой) не удаляется, это не создает проблем (т. е. вызывается новый метод), пока я не создаю статическую библиотеку для сторонних библиотек 3RD, используемых в проекте, которая связывает объявление метода со старым методом, который не вписывается в измененную структуру Reachability.
Достижимость * достижимость = [Достижимость достижимости для InternetConnection]; BOOL remoteHostStatus = [достижимость currentReachabilityStatus];
if (remoteHostStatus == ReachableViaWiFi || remoteHostStatus == ReachableViaWWAN)
{
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:textFieldUserName.text,@"email",textFieldpass.text,@"password", nil];
objApp.responseData = [[NSMutableData data]init];
objApp.request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@login",mainUrl]]];
NSData * requestBodyData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];
objApp.request.HTTPMethod= @"POST";
[objApp.request setHTTPBody:requestBodyData];
[objApp.request setTimeoutInterval:8.0f];
// Create url connection and fire request
objApp.connection = [[NSURLConnection alloc] initWithRequest:objApp.request delegate:self];
}
else
{
[objApp alertViewFromApp:@"check internet connection of device"];
}
Шаг 1:-
импортировать SystemConfiguration
Шаг 2:-
//MARK:- Internet available or Not
public static func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
}
var flags = SCNetworkReachabilityFlags()
if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
return false
}
let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
return (isReachable && !needsConnection)
}
Шаг 3:-
if Global.isConnectedToNetwork() {
}