检查 iPhone 是否有活动的互联网连接情况。

5

我想检查用户是否拥有有效的互联网连接。这是我的实现方式。它似乎工作正常,但问题在于,在我的iPhone模拟器上它总是显示没有连接(uialert出现),即使我的wifi开启或关闭。是否有人知道我做错了什么? 感谢您的帮助!

Reachability *r= [Reachability reachabilityWithHostName:@"http://www.google.com"];
    NetworkStatus internetStatus= [r currentReachabilityStatus];

 if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN))
    {

        UIAlertView *alert= [[UIAlertView alloc] initWithTitle:@"No internet" message:@"No internet connection found. Please try again later"
                                                      delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }

 else {

 // execute code in app

 }
2个回答

6
这是我在我的应用程序中的做法:
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];

if(internetStatus == NotReachable) {
    UIAlertView *errorView;

    errorView = [[UIAlertView alloc]
                 initWithTitle: NSLocalizedString(@"Network error", @"Network error")
                 message: NSLocalizedString(@"No internet connection found, this application requires an internet connection to gather the data required.", @"Network error")
                 delegate: self
                 cancelButtonTitle: NSLocalizedString(@"Close", @"Network error") otherButtonTitles: nil];

    [errorView show];
    [errorView autorelease];
}

它的作用是检查网络连接是否存在,而不是检查是否可以访问域名。如果没有网络连接(无线或移动数据),它将显示一个UIAlertView消息(已本地化)。

0
不要检查。当可达性报告没有网络时,收音机经常开始打开并建立连接(可达性报告可能是启动此过程并因此使自己的答案在几秒钟后变为错误的原因)。

抱歉,“radio”是什么意思?我听过一些以前的用户说,如果你不检查,应用商店会拒绝应用。 - Teddy13
我已经有三个需要网络活动的应用程序被应用商店批准,我对此进行了相当多的研究。如果您不想检查可达性细节,那么您无需这样做,我怀疑大多数应用程序都不会这样做。但是,如果您的应用程序需要网络但网络不可用,则需要在应用程序中具有用户友好的行为。这意味着没有冻结、挂起,并且最重要的是,如果应用程序需要互联网但不可用,则显示警报或类似内容。 - johnbakers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接