iPhone多个警报在网络连接检查后调用

时间:2011-06-11 19:59:56

标签: iphone networking connection uialertview

在寻找答案时,有人注意到了这个问题,但没人解决。我只是希望在发生网络连接更改(即网络丢失)时通知用户。下面的代码可以工作,但我得到多个警报,通常是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;
}

1 个答案:

答案 0 :(得分:1)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];

上述代码行只应该为整个应用程序调用一次 如果在多次调用的函数中调用此行代码,则通知还会显示许多警报。

所以我建议你创建一个单例类,它将在整个应用程序中生效,并在创建单例类对象的区域中调用上面的代码行。

注意: - 对于整个应用程序,只应调用一行代码