在寻找答案时,有人注意到了这个问题,但没人解决。我只是希望在发生网络连接更改(即网络丢失)时通知用户。下面的代码可以工作,但我得到多个警报,通常是3.我理解为什么它可能发生的原因是因为多次内部调用是为了准确,但我似乎只有一个警报显示,就是这样。我试图使用BOOL来检测警报是否已经显示(警报显示),但它仍然没有帮助。 谢谢你的想法。
- (void)applicationDidBecomeActive:(UIApplication *)application {
////NSLog(@"DidBecomeActive");
[self performSelector:@selector(getNetworkConnection) withObject:nil afterDelay:5.0];
}
-(void)getNetworkConnection
{
Reachability *r = [Reachability reachabilityWithHostName:@"www.google.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN))
{
if (!self.alertShowing) {
UIAlertView *myAlert = [[[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"This app require an internet connection via WiFi or cellular network to work." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] autorelease];
self.alertShowing = YES;
[myAlert show];
}
}
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
self.alertShowing = NO;
}
答案 0 :(得分:1)
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];
上述代码行只应该为整个应用程序调用一次 如果在多次调用的函数中调用此行代码,则通知还会显示许多警报。
所以我建议你创建一个单例类,它将在整个应用程序中生效,并在创建单例类对象的区域中调用上面的代码行。
注意: - 对于整个应用程序,只应调用一行代码