2012-04-15 59 views
7

我使用可达性API来检测我目前的连接,但我只能区分WIFI和3G。是否可以使用iOS SDK检测LTE连接?

我得到了以下标志:

LTE:kSCNetworkReachabilityFlagsIsLocalAddress|kSCNetworkReachabilityFlagsIsWWAN|kSCNetworkReachabilityFlagsTransientConnection|kSCNetworkReachabilityFlagsReachable

WIFI:kSCNetworkReachabilityFlagsIsDirect|kSCNetworkReachabilityFlagsReachable

的问题是,LTE返回相同的标志作为一款3G连接。有什么方法可以确定用户目前是否拥有LTE或3G?

+0

您对网络带宽较高或网络本身的类型感兴趣吗?前者有一个解决方法,但不是后者。 – bendu 2012-04-15 03:16:54

+0

我想解决的办法是简单地尝试下载并跟踪速度? – 2012-04-15 03:33:34

回答

3

我不知道这个隐藏的核心电话API能否为您提供足够的信息来确定您是否连接到LTE或较慢的技术。

CTRegistrationGetCurrentMaxAllowedDataRate(); 

这可能是值得尝试的。

更多关于这里使用私有的API:iPhone mobile number using Core telephony

不过,我读过您的应用程序将通过苹果,如果你使用的API私人被拒绝。

15

从iOS 7开始,您可以在CoreTelephony框架中使用CTTelephonyNetworkInfocurrentRadioAccessTechnology属性找到它。

#import <CoreTelephony/CTTelephonyNetworkInfo.h> 

CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new]; 

if ([networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) { 
    // ... 
} 
+2

有谁知道为什么'currentRadioAccessTechnology'方法没有文档? https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTTelephonyNetworkInfo/Reference/Reference.html – Robert 2014-02-05 12:52:17

+0

此方法添加了iOS7.0,但它不是添加文档。 检查头文件“CTTelephonyNetworkInfo.h” '''oc @property(nonatomic,readonly,retain)NSString * currentRadioAccessTechnology __OSX_AVAILABLE_STARTING(__ MAC_NA,__ IPHONE_7_0); ''' – TopChul 2014-05-15 08:35:38

+1

这还没有正式记录,这让我感到紧张。我把它放在try catch中,这样如果它被带走,我可以有一些默认行为。 – 2015-02-05 16:10:09

相关问题