Помощь по доступу - обнаружение WiFi - PullRequest
7 голосов
/ 19 августа 2011

Я импортировал 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];
    }
}

1 Ответ

7 голосов
/ 19 августа 2011

Достижимость только позволяет узнать, может ли устройство успешно отправлять пакеты данных из .Так что для 1) вы должны обратиться к iPhone получить SSID без личной библиотеки .2) вы будете использовать Reachability только для проверки интернет-соединения, тогда вам нужно будет использовать NSURLConnection или другую сетевую библиотеку, чтобы убедиться, что вы можете связаться с вашим сервером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...