【问题标题】:iphone SDK detect Wifi and Carrier networkiphone SDK检测Wifi和运营商网络
【发布时间】:2010-12-10 03:45:14
【问题描述】:

我的应用程序访问互联网,我只想检测是否存在通过 wifi 或运营商数据网络的连接

苹果已经为“可达性”做了一个例子

https://developer.apple.com/iphone/library/samplecode/Reachability/

我认为它只是检测到 wifi 而不是运营商网络

谁能告诉我,检测是否存在连接(任何类型的连接)的最佳方法是什么

感谢您的帮助!

【问题讨论】:

  • 那有点老了。 Tony Miller 有一个更新版本的 Reachability,我用过 here

标签: iphone networking wifi detect


【解决方案1】:

该样本正是您所需要的。

查看 Reachability.m。它会告诉你是否有任何联系,然后告诉你你有什么样的联系。

【讨论】:

  • 更具体地解决您的问题:可达性代码将检测任何类型的连接,而不仅仅是 WiFi。您所要做的就是将 Reachability 类导入您的项目,然后实例化一个 Reachability 对象并从那里开始。
【解决方案2】:

如果您只想检测您是否已连接,以及如果您已连接,您使用的是什么类型的连接,那么 Reachability 示例可能有点过分。实际上,该示例还包含显示如何设置和使用通知您状态更改的回调的代码。

对于源代码的 sn-p,可以准确地告诉您您是否已连接,以及您使用的是什么类型的连接,您可能想看看我对类似问题的回答,发布在 here

【讨论】:

    【解决方案3】:

    一旦你向任何网络资源发出请求,iPhone 就会使用它找到的任何连接,它会使用 wifi(作为更高的优先级),如果 wifi 未连接,它会使用运营商网络。 没有阻止运营商网络的代码设置。

    所有你需要做的:

    • 在测试地点检查信号。
    • 在 safari 上检查您尝试访问的链接,确保不是您的应用有问题。
    • 如果链接在 safari 上无效(确保使用运营商网络),请联系您的运营商支持

    【讨论】:

      【解决方案4】:

      这些技术很有用,但请记住,设备到 Internet 的路径可能包含几种不同类型的连接。例如,iPhone 或 iPod touch 可能正在使用 WiFi 连接到移动热点,而移动热点又拥有自己的 3G 无线连接。因此,假设 WiFi 连接的存在意味着比 3G 更高的带宽是不安全的。

      【讨论】:

        【解决方案5】:

        Reachability(Apple 的示例代码和其他人的类似代码,以及底层的 SCNetworkReachability 都会告诉您没有互联网接入,或者您将通过 WiFi 接入互联网,或者您将通过移动设备接入互联网数据。

        如果您有可用的 WiFi 和移动数据,它会告诉您“WiFi”。当您有 WiFi 时,无法确定移动数据是否可用。 (在没有 WiFi 的情况下,您可以轻松发现移动数据可用)。您无法确定飞行模式是否已打开(这与 WiFi 和移动数据关闭不同)。

        WiFi 可用不保证下载将使用 WiFi 而不是移动数据。你可能在家里开始下载,一分钟后离开,WiFi 消失,iOS 会愉快地继续通过 3G 下载。您可以在下载调用中设置一个标志以禁止 3G。错误代码将是 -1009 = 无法访问互联网,没有提及 3G 可用。

        使用 CTTelephonyNetworkInfo,您可以发现您使用的设备可能有移动数据(不是没有移动数据的 iPod Touch 或 iPad,并且设备中有 SIM)。

        【讨论】:

          猜你喜欢
          • 2010-10-10
          • 2011-04-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-20
          • 2020-12-16
          • 2012-08-01
          • 1970-01-01
          相关资源
          最近更新 更多