Приложение для iPhone, оповещать пользователей, когда они не подключены к Интернету? - PullRequest
1 голос
/ 27 сентября 2011

Какой простой способ кодировать предупреждение, которое предупреждает пользователей, когда они не подключены к Интернету?Я использую XCode, сейчас, когда нет соединения, это просто белый экран в uiwebview.

Ответы [ 3 ]

6 голосов
/ 27 сентября 2011

Здесь вы можете проверить, есть ли у Wi-Fi соединение, 3g или нет:

if ([[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == ReachableViaWiFi) {
    // Do something that requires wifi
} else if ([[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == ReachableViaWWAN) {
    // Do something that doesnt require wifi
} else if ([[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == NotReachable) {
    // Show alert because no wifi or 3g is available..
}

Apple предоставляет все необходимые интерфейсы API / доступность здесь: Ссылка на доступность


Я сделал эти пользовательские функции удобства для себя во всех моих проектах:

+ (BOOL)getConnectivity {
    return [[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] != NotReachable;
}

+ (BOOL)getConnectivityViaWiFiNetwork {
    return [[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == ReachableViaWiFi;
}

+ (BOOL)getConnectivityViaCarrierDataNetwork {
    return [[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == ReachableViaWWAN;
}

И используется так:

if ([ServerSupport getConnectivity]) {
    // do something that requires internet...
else {
    // display an alert
    UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Network Unavailable" 
                                                     message:@"App content may be limited without a network connection!" 
                                                    delegate:self 
                                           cancelButtonTitle:@"OK" 
                                           otherButtonTitles:nil] autorelease];
    [alert show];
}
3 голосов
/ 27 сентября 2011

Если вашему приложению требуется постоянное подключение к Интернету, вы можете включить ключ UIRequiresPersistentWiFi в свой plist-файл. Используя это, iOS автоматически отобразит предупреждение пользователю в режиме аэропорта.

Кроме того, iOS обеспечит, чтобы радио Wi-Fi не выключалось / не находилось в спящем режиме, пока ваше приложение находится на переднем плане.

0 голосов
/ 27 сентября 2011

Обратите внимание, что подключение к Интернету очень динамично на мобильном устройстве (несколько радиомодулей, несколько точек доступа, несколько вышек сотовой связи, путешествия, конкурирующие радиопомехи, «вы ошиблись» и т. Д.), И, следовательно, достижимость не идеальна решение, так как сетевое подключение очень часто может меняться непосредственно перед, во время или после того, как Reachability выполняет свои проверки. Достижимость может лежать прямо (да, мы подключены к точке доступа, правда, даже если широкополосная связь не работает на другой стороне точки доступа). Reachability также часто сообщает об отсутствии соединения, так как его собственный запрос включает радиостанции, чтобы через пару секунд получить отличное соединение.

Лучше всего просто попытаться получить доступ к данным из сети, прокрутить индикатор активности во время ожидания и предложить пользователю некоторый элемент API, чтобы он отказался, если он в конечном итоге ждет слишком долго, в их мнение, а не мнение какого-то разработчика ... Они лучше, чем вы, знают, сколько времени потребуется для (повторного) установления соединения в их районе и сколько времени они готовы ждать.

...