【问题标题】:Check internet connection on iPhone and monitor changes检查 iPhone 上的互联网连接并监控变化
【发布时间】:2011-12-31 19:08:02
【问题描述】:

我已经按照this answer 实现了可达性类。 我有两个不同的问题,希望对您有所帮助...

我已将通知程序放在我的 viewDidLoad 中:

(void)viewDidLoad
{
    [super viewDidLoad];
    // check for internet connection
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];

    internetReachable = [Reachability reachabilityForInternetConnection];
    [internetReachable startNotifier];

    // check if a pathway to a random host exists
    hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"];
    [hostReachable startNotifier];
}

然后我在 viewDidAppear 中检查互联网连接:

(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    //check connection when access to the view
    if (internetActive)
    {
        [self loadData];
    }
    else
    {
        UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:@"Internet connection not available" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [errorAlert show];
    }
}

第一个问题:第一次如何检查互联网连接

我第一次访问视图时,会显示警报,如果互联网连接正常也是如此。我认为这是因为通知者尚未收到有关连接的通知。如何管理?

第二个问题:如果连接状态发生变化(即从不存在变为存在),通知者不会就此提供建议

如果我在没有互联网连接的情况下启动应用程序,警报会正确显示。但是,如果互联网再次可用,则每次我访问视图时都会继续显示警报,因为不会拦截互联网可用性的变化。我认为这是由于在同一线程上执行通知程序。如何实现此连接检查以拦截连接状态变化?

提前致谢,新年快乐, 亚萨

【问题讨论】:

标签: ios connection reachability


【解决方案1】:

您的怀疑是正确的,viewDidLoadviewDidAppear 方法在同一个运行循环中被调用是很常见的,这意味着您在viewDidAppear 之前不会收到任何通知。

编辑
我不确定这是否可行,因为我现在没有 xcode:

在收到任何通知之前,请尝试使用[internetReachable currentReachabilityStatus][hostReachable currentReachabilityStatus] 检查当前状态。

如果您的代码仍然与 the answer you linked 相同,只需在您的 viewDidLoadviewDidAppear 中调用 [self checkNetworkStatus:nil],然后再检查 internetActive 标志

【讨论】:

  • 非常感谢您的提示!!!更改 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; //check connection when access to the view //if (internetActive) if ([internetReachable currentReachabilityStatus]) { 对我来说效果很好!!!
猜你喜欢
  • 2014-10-29
  • 2012-02-21
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
相关资源
最近更新 更多