2012-04-15 58 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

相關問題