iOS 可达性未知时刻
Posted
技术标签:
【中文标题】iOS 可达性未知时刻【英文标题】:iOS Reachability Unknown Moment 【发布时间】:2015-01-24 11:57:59 【问题描述】:我在我的应用程序中使用 Apple 的 Reachability 类,以便在我在线或离线时得到注意,以便我知道我应该从在线还是本地获取数据。
我的问题是,有 3-5 秒的小间隔。如果我断开网络连接,例如开启飞行模式,需要 3-5 秒才能收到通知,我不再使用任何网络。
这意味着,如果我在此期间尝试在应用中获取任何数据,它会认为我在线,因此无法获取数据等。
我该如何处理这个差距?如果不知道设备何时下线,这似乎是一个难题。
【问题讨论】:
【参考方案1】:尝试像这样在 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;
这对我来说非常适合。
【讨论】:
我已经尝试过您的代码,它的工作原理与我现有的可达性代码相同。在失去网络连接和收到通知之间仍然存在显着差距。以上是关于iOS 可达性未知时刻的主要内容,如果未能解决你的问题,请参考以下文章