Apple的可达性是否适用于3G连接?

时间:2010-04-15 13:18:26

标签: iphone objective-c ipad reachability

我正在开发一个iPad应用程序,我正在试图找出决定用户是否可以连接到Internet的最佳方法。如果用户没有连接,我将加载缓存数据,否则我将加载新数据。我正在尝试使用Apple的可达性类,我想看看我是否正确地执行此操作。在applicationDidFinishLaunchingWithOptions中,我这样做:

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

Reachability hostReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
[hostReach startNotifer];

然后我的reachabilityChanged:看起来像这样:

- (void)reachabilityChanged:(NSNotification* )note {
    Reachability *curReach = [note object];
    self.internetConnectionStatus = [curReach currentReachabilityStatus];

    if (internetConnectionStatus == NotReachable) {
        [viewController getDataOffline];
    } else {
        if (![[NSUserDefaults standardUserDefaults] objectForKey:kFIRST_LAUNCH]) [viewController getCurrentLocation];
        else [viewController getData];
    }
}

目前,这适用于WiFi iPad。我只是想确保这适用于3G iPad。如果我正确地做到这一点,你能告诉我吗?

2 个答案:

答案 0 :(得分:3)

是的,可达性类可以使用WiFi和3G来确定远程主机是否可访问。

另外,作为附注,您可能需要考虑始终在启动应用程序时显示缓存数据,然后在后台异步更新到新数据。根据应用程序的上下文,这可以创建更好的用户体验,因为一些数据始终可用。

如果您有兴趣了解更多相关信息,可以在“iPhone高级项目”一书中找到一个很棒的章节,标题为“假你做到了:提高界面响应能力的提示和技巧”。

答案 1 :(得分:1)

是的,Reachability类会告诉您是否可以使用任何网络方法访问它。