我在我的应用程序中使用Apple的Reachability类,当我在网络上或离线时会被注意到,这样我就知道我是应该从在线还是本地获取数据。
我的问题是,有一个很小的3-5秒的差距。如果我从网络断开连接,例如打开飞机模式,需要3-5秒才会收到通知,我不再在任何网络上。
这意味着,如果我在这段时间内尝试获取应用程序中的任何数据,它会认为我在线,因此无法获取数据等。
我该如何处理这个差距呢?如果不知道设备何时离线,这似乎是一个困难的问题。
发布于 2015-01-24 20:33:52
尝试在AppDelegate.m中设置可达性类,如下所示:
Reachability *internetReachable;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Set up Reachability
internetReachable = [Reachability reachabilityForInternetConnection];
// check for internet connection
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(checkNetworkStatus:)
name:kReachabilityChangedNotification object:nil];
[internetReachable startNotifier];
- (void)checkNetworkStatus:(NSNotification *)notice {
// called after network status changes
if ( connected]) {
// Your code HERE!
}
}
- (BOOL)connected {
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [reachability currentReachabilityStatus];
return networkStatus != NotReachable;
}
这对我来说非常有效。
https://stackoverflow.com/questions/28125221
复制相似问题