Используете ли вы класс Reachability, описанный в документации Apple ? Если нет, вы должны взглянуть на это. Это даст вам статус сети, в том числе ли вы подключены к Интернету. Он имеет уведомление об изменении состояния сети, поэтому вы можете добавить наблюдателя в свой делегат приложения или в любое другое место, где он вам нужен для достижения вашей цели.
В Интернете уже имеется много справки с примерами использования Reachability, и этот может быть чем-то, с чего вы можете начать.
Обновление
Уведомления об изменении Raachability могут использоваться для информирования вашего приложения, когда соединение потеряно или восстановлено. См. Оператор уведомления в приведенном ниже коде для класса Reachability;
static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info)
{
#pragma unused (target, flags)
NSCAssert(info != NULL, @"info was NULL in ReachabilityCallback");
NSCAssert([(NSObject*) info isKindOfClass: [Reachability class]], @"info was wrong class in ReachabilityCallback");
//We're on the main RunLoop, so an NSAutoreleasePool is not necessary, but is added defensively
// in case someon uses the Reachablity object in a different thread.
NSAutoreleasePool* myPool = [[NSAutoreleasePool alloc] init];
Reachability* noteObject = (Reachability*) info;
// Post a notification to notify the client that the network reachability changed.
[[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: noteObject];
[myPool release];
}
Чтобы это работало, вам нужно вызвать startNotifier:
- (BOOL) startNotifier
{
BOOL retVal = NO;
SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL};
if(SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context))
{
if(SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode))
{
retVal = YES;
}
}
return retVal;
}