我正在使用可达性API来检测我当前的连接,但我只能区分WIFI和3G。
我得到以下标志:
LTE:kSCNetworkReachabilityFlagsIsLocalAddress|kSCNetworkReachabilityFlagsIsWWAN|kSCNetworkReachabilityFlagsTransientConnection|kSCNetworkReachabilityFlagsReachable
无线网络:kSCNetworkReachabilityFlagsIsDirect|kSCNetworkReachabilityFlagsReachable
问题是LTE返回与3G连接相同的标志。有没有办法确定用户目前是否拥有LTE或3G?
从iOS 7开始,您可以使用CoreTelephony框架中CTTelephonyNetworkInfo
的currentRadioAccessTechnology
属性找到这一点。
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new];
if ([networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
// ...
}
我想知道这个隐藏的核心电话API是否可以为您提供足够的信息,以便您确定您是连接到LTE还是较慢的技术。
CTRegistrationGetCurrentMaxAllowedDataRate();
可能值得尝试一下。
有关使用私有 API 的更多信息,请参阅:使用 Core 电话的 iPhone 手机号码
但是,我读到,如果您使用私有 API,您的应用程序将被苹果拒绝。