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 连接?的主要内容,如果未能解决你的问题,请参考以下文章