1

所以我让警报视图检测是否存在活动的互联网连接。

这是代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(reachabilityChanged:)
    name:kReachabilityChangedNotification
    object:nil];
    Reachability * reach = [Reachability reachabilityWithHostname:@"www.google.com"];
    reach.reachableBlock = ^(Reachability * reachability)
    { 
     dispatch_async(dispatch_get_main_queue(), ^{
     blockLabel.text = @"";  
     });
    };
    reach.unreachableBlock = ^(Reachability * reachability)
    {
     dispatch_async(dispatch_get_main_queue(), ^{
     blockLabel.text = @"You are not connected to the Internet";
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Please connect to Internet"
     message:nil
     delegate:self
     cancelButtonTitle:nil
     otherButtonTitles:nil];
     UIActivityIndicatorView *progress= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 50, 30, 30)];
     progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
            [alert addSubview:progress];
            [progress startAnimating];
            [alert show]; 
        });
    };
    [reach startNotifier];
    // Do any additional setup after loading the view, typically from a nib.
}

所以我的应用程序检测是否有互联网连接。但问题是,如果我在 iPhone 上打开互联网并打开应用程序,它仍然说没有互联网连接。我该怎么办……</p>

4

3 回答 3

1

好吧,我通过使用通知解决了这个问题..参考代码

-(void)reachabilityChanged:(NSNotification*)note
{
    Reachability * reach = [note object];

    if([reach isReachable])
    {
        notificationLabel.text = @"Notification Says Reachable";
        NSLog(@"Internet is Up");
    }
    else
    {
        notificationLabel.text = @"Notification Says Unreachable";
        NSLog(@"Internet is Down");
    }
}
于 2012-11-22T20:18:34.053 回答
0

您始终可以通过注册可访问性通知来不间断地检查主机可访问性(或互联网连接)。

关于如何做到这一点的最佳示例之一可以在 SO 上找到:如何检查 iPhone SDK 上的活动 Internet 连接?

这样,您的应用程序将始终知道主机是否可访问。

于 2012-11-22T19:59:19.227 回答
0

不知道您的稀疏代码做了什么,因为它甚至看起来不像您的 Reachability 类是 Apple 围绕 SystemConfiguration API 的 Reachability 示例代码包装器,您可以在http://developer.apple.com/library/ios/#示例代码/Reachability/Introduction/Intro.html

最简单和最明确的检查只是针对特定 url 的未缓存 NSURLRequest (不仅仅是一个主机名,它只是测试 DNS 解析是否正常工作,这不是一个明确的测试,甚至可以被缓存)

于 2012-11-22T20:02:04.823 回答