Я импортировал Reachability в свое приложение, и у меня есть пара вопросов с практическими рекомендациями для всех вас. Позвольте мне сначала объяснить свое приложение и другие инструменты.
Это приложение обменивается данными с двумя объектами ОДНОВРЕМЕННО: одноранговой сетью и Интернетом через 3G. Примечание. Специальная сеть НЕ подключена к Интернету. Это отлично работает - это уже реализовано и отлично тестируется.
С учетом сказанного, я хочу реализовать Reachability для обнаружения двух вещей.
1) Подключен ли пользователь к одноранговой сети Wi-Fi? (Еще лучше, если возможно, определить, подключен ли он к одноранговой сети Wi-Fi с префиксом WXYZ. Например, если в списке указаны две сети, одна называется Linksys, а другая - WXYZ-Testing_Platform, он знает подключен он к WXYZ или нет).
2) Может ли пользователь подключиться к Интернету через 3G (или 2G, и т. Д.) И получить доступ к нашему серверу?
Заранее спасибо
ИЗМЕНИТЬ, ЧТОБЫ ВКЛЮЧИТЬ ОТВЕТ ДЛЯ БУДУЩИХ:
Для 1), мой код выглядит так:
.h
#import //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];
}
}