代码之家  ›  专栏  ›  技术社区  ›  rickharrison

苹果的可达性能与3G连接一起工作吗?

  •  1
  • rickharrison  · 技术社区  · 15 年前

    我正在开发一个iPad应用程序,我正试图找出决定用户是否可以连接到互联网的最佳方法。如果用户没有连接,我将加载缓存数据,否则我将加载新数据。我正在尝试使用苹果的可达性类来实现这一点,我想看看我做的是否正确。在ApplicationDindFinishLaunchingWithOptions中,我执行以下操作:

    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
    
    Reachability hostReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
    [hostReach startNotifer];
    

    然后我的可达性更改:如下所示:

    - (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 回复  |  直到 15 年前
        1
  •  3
  •   Dillan    15 年前

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

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

    如果您有兴趣了解更多有关这方面的信息,可以在“iPhone高级项目”一书中找到一个精彩的章节,标题为“假IT_直到成功:提高界面响应能力的提示和技巧”。

        2
  •  1
  •   Jeff Kelley    15 年前

    是的,可到达性类将告诉您是否可以使用任何网络方法访问它。