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

Posted

技术标签:

【中文标题】Apple 的可达性是不是适用于 3G 连接?【英文标题】:Does Apple's Reachability work with 3G connectivity?Apple 的可达性是否适用于 3G 连接? 【发布时间】:2010-04-15 13:18:25 【问题描述】:

我正在开发一个 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。请让我知道我这样做是否正确?

【问题讨论】:

【参考方案1】:

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

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

如果您有兴趣了解这方面的更多信息,可以在“iPhone 高级项目”一书中找到名为“Fake It 'Til You Make It: Tips and Tricks for Improvement Interface Responsiveness”的精彩章节。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Apple 的可达性是不是适用于 3G 连接?的主要内容,如果未能解决你的问题,请参考以下文章

寻找可达性(2.0)用例验证

可达性 - 检查公共 Wi-Fi 连接是不是有效

暂停应用程序的可达性更改 iOS 系统通知

需要帮忙。 Apple 的带有地址的可达性类不起作用

iPhone 上的网络可达性

ios - 可达性通知多个警报