7

我正在使用可达性 API 来检测我当前的连接,但我只能区分 WIFI 和 3G。

我得到以下标志:

LTE:kSCNetworkReachabilityFlagsIsLocalAddress|kSCNetworkReachabilityFlagsIsWWAN|kSCNetworkReachabilityFlagsTransientConnection|kSCNetworkReachabilityFlagsReachable

无线上网:kSCNetworkReachabilityFlagsIsDirect|kSCNetworkReachabilityFlagsReachable

问题是 LTE 返回与 3G 连接相同的标志。有什么方法可以判断用户当前是LTE还是3G?

4

2 回答 2

15

从 iOS 7 开始,您可以使用CoreTelephony 框架中的currentRadioAccessTechnology属性找到这一点。CTTelephonyNetworkInfo

#import <CoreTelephony/CTTelephonyNetworkInfo.h>

CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new];

if ([networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
    // ...
}
于 2013-10-22T20:18:02.193 回答
3

我想知道这个隐藏的 Core Telephony API 是否可以为您提供足够的信息来确定您是否连接到 LTE 或速度较慢的技术。

CTRegistrationGetCurrentMaxAllowedDataRate();

可能值得尝试。

有关在此处使用私有 API 的更多信息:使用 Core 电话的 iPhone 手机号码

但是,我了解到如果您使用私有 API,您的应用程序将被苹果拒绝。

于 2013-01-05T01:10:37.130 回答