【问题标题】:Does iOS reachability detect network changes when app is brought to foreground将应用程序置于前台时,iOS 可达性是否检测到网络变化
【发布时间】:2015-04-28 14:12:16
【问题描述】:

我开发了一个 iOS 7 应用程序。 在我的应用程序中,我需要检测网络连接是否发生变化(3g \ wifi \ 等)。 如果是这样,我会重新连接我的服务。

我不知道一旦应用重新回到前台,可达性是否可以检测到网络连接的变化。

假设以下场景:

  1. 应用启动

  2. 用户将应用移至后台,继续使用 Facebook

  3. 应用被暂停

  4. 用户从 3g 切换到 wifi

  5. 用户返回我的应用

可达性会检测到这种连接变化吗?

【问题讨论】:

  • 应该是这样,这听起来像是一个简单的测试场景。你试过了吗?
  • 问题是我不完全确定我测试它是否不会影响结果(特别是在使用调试器时,甚至写入远程日志时)。想要一个明确的答案
  • 使用 Rechability 类,因为您可以找到几乎所有此类更改的通知。希望对您有所帮助。
  • 你如何从这句话中推断出它会更新应用程序在后台\暂停时发生的变化?
  • 调试器对可达性逻辑没有任何影响。不过,您可以编写一个非常简单的应用程序,在屏幕上显示最新状态,然后通过从控制中心切换 Wi-Fi 和飞行模式来更改您的网络状况。请记住,此处的“确定答案”仍然可能是错误的或过时的。

标签: ios reachability


【解决方案1】:

使用Rechability 类,因为您可以找到所有此类通知/功能。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我有一个应用程序必须连接到 WiFi 并检测访问点何时更改或它在依赖它的所有视图控制器上断开连接。我使用可达性通知机制。

    对于我的应用,当我将应用重新置于前台时,Reachability 会检测到 WiFi 变化。所以它会做你想做的事。

    我不得不说,虽然我还没有发现 Reachability 是 100% 可靠的。大多数情况下,它都按您的预期工作,但并不完美。

    作为备份,我在大多数视图控制器上的viewWillAppear 中检查当前网络。当应用程序回到前台时,这无济于事,因为据我所知,viewWillAppear 没有被调用。不过,您可以检测到应用委托中的更改。

    【讨论】:

      【解决方案3】:

      如果我理解正确,您可以在每次应用进入前台时检查可达性,例如:

      - (void)applicationWillEnterForeground:(UIApplication *)application
      {
      //Check the Reachability here;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 2014-09-14
        • 1970-01-01
        • 1970-01-01
        • 2015-03-17
        • 1970-01-01
        相关资源
        最近更新 更多