在 iPhone 上检测 2G 和 3G

Posted

技术标签:

【中文标题】在 iPhone 上检测 2G 和 3G【英文标题】:Detecting 2G and 3G on an iPhone 【发布时间】:2013-11-05 14:54:22 【问题描述】:

我目前正在使用苹果可达性示例来检测可用连接,但我需要能够检测 WWAN 连接是 2G 还是 3G。出于应用程序下载文件以确定信号速度的目的,这不是解决方案,并且使用状态栏读取连接也已被取消。

我目前正在使用 MKNetworkKit 来处理我的请求。

任何帮助表示赞赏 谢谢。

【问题讨论】:

【参考方案1】:

SCNetworkReachability 界面可以帮助您。基本上,您创建一个所谓的可达性引用,然后在其上调用SCNetworkReachabilityGetFlags 以获取有关连接的信息。

返回的标志包括kSCNetworkReachabilityFlagsIsWWAN,它告诉您是通过 WiFi 还是蜂窝网络连接。不过,AFAIK 不能用来区分 2G 和 3G。

请参阅Apple's Reachability sample app 了解实现。在大多数情况下,您应该能够直接在项目中使用包含的 Reachability 类。

【讨论】:

上述简答,NO你无法检测到网络类型!【参考方案2】:

您无法检测网络类型,Reachability 只能管理这些网络状态:

typedef enum

    // Apple NetworkStatus Compatible Names.
    NotReachable = 0,      // No connection
    ReachableViaWiFi = 2,  // Connecte on WIFI
    ReachableViaWWAN = 1   // Connected on 2G, 3G or 4G network.
 NetworkStatus;

【讨论】:

以上是关于在 iPhone 上检测 2G 和 3G的主要内容,如果未能解决你的问题,请参考以下文章

检测特定的iPhone / iPod touch型号[重复]

使用 2G、3G、4G 网络的 iPhone 应用程序

有没有办法检测扩展是不是在 iPad 和 iPhone 上运行

在 iPhone 上检测运动(前进/后退)的算法?

苹果开发工具Xcode确认iPhone6s内存为2G

如何识别设备(iPod touch/iPhone)是 2G 还是 3G?