Я импортировал Reachability в свое приложение, и у меня есть пара практических вопросов для всех вас. Позвольте мне сначала объяснить мое приложение и другие инструменты.
Это приложение взаимодействует с двумя вещами ОДНОВРЕМЕННО, специальной сетью и Интернетом через 3G. Примечание. Специальная сеть НЕ подключена к Интернету. Это прекрасно работает - оно уже реализовано и прекрасно работает.
Учитывая сказанное, я хочу реализовать Reachability для обнаружения двух вещей.
1) Подключен ли пользователь к одноранговой сети Wi-Fi? (Еще лучше, если это возможно, обнаружить, подключен ли он к специальной сети Wi-Fi с префиксом WXYZ. Например, если в списке есть две сети, одна называется Linksys, а другая - WXYZ-Testing_Platform, она знает, подключен ли он к WXYZ или нет).
2) Может ли пользователь подключиться к Интернету через 3G (или 2G и т. Д.) И получить доступ к нашему серверу?
Заранее спасибо
ИЗМЕНИТЬ, ЧТОБЫ ВКЛЮЧИТЬ ОТВЕТ ДЛЯ БУДУЩИХ ПОСЛЕДНИКОВ:
Для 1) мой код выглядит так:
.h
#import <SystemConfiguration/CaptiveNetwork.h> //for checking wifi network prefix
.m
- (BOOL) connectedToWifi
{
CFArrayRef myArray = CNCopySupportedInterfaces();
// Get the dictionary containing the captive network infomation
CFDictionaryRef captiveNtwrkDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
NSLog(@"Information of the network we're connected to: %@", captiveNtwrkDict);
NSDictionary *dict = (__bridge NSDictionary*) captiveNtwrkDict;
NSString* ssid = [dict objectForKey:@"SSID"];
if ([ssid rangeOfString:@"WXYZ"].location == NSNotFound || ssid == NULL)
{
return false;
}
else
{
return true;
}
}
И для 2) , я импортировал Reachability и использую этот метод всякий раз, когда я иду на соединение с сервером ... ПРИМЕЧАНИЕ: замените http://www.google.com информацией о сервере
-(void) checkIfCanReachServer
{
UIAlertView *errorView;
Reachability *r = [Reachability reachabilityWithHostName:@"http://www.google.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
if(internetStatus == NotReachable) {
errorView = [[UIAlertView alloc]
initWithTitle: @"Network Error"
message: @"Cannot connect to the server."
delegate: self
cancelButtonTitle: @"OK" otherButtonTitles: nil];
[errorView show];
}
}