使用iOS SDK能否检测LTE连接?

7
我正在使用可达性API来检测我的当前连接,但我只能区分WIFI和3G。
我得到了以下标志:
LTE: kSCNetworkReachabilityFlagsIsLocalAddress|kSCNetworkReachabilityFlagsIsWWAN|kSCNetworkReachabilityFlagsTransientConnection|kSCNetworkReachabilityFlagsReachable WIFI: kSCNetworkReachabilityFlagsIsDirect|kSCNetworkReachabilityFlagsReachable 问题在于LTE返回与3G连接相同的标志。有没有办法确定用户目前是使用LTE还是3G?

你是对网络带宽感兴趣还是只是对网络类型本身感兴趣?前者有解决方法,但后者没有。 - bendu
我猜解决方法就是尝试下载一些东西并跟踪速度? - Gilad Novik
2个回答

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
这个方法在iOS7.0中被添加,但未添加文档。 请查看头文件“CTTelephonyNetworkInfo.h”@property (nonatomic, readonly, retain) NSString* currentRadioAccessTechnology __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0); - TopChul
1
这仍然没有正式记录,这让我感到紧张。我将其放在try catch中,以便如果它被删除,我可以有一些默认行为。 - Kyle Jurick

3
我想知道这个隐藏的核心电话API是否能够为您提供足够的信息,以确定您是否连接到LTE或更慢的技术。
CTRegistrationGetCurrentMaxAllowedDataRate();

这个可能值得试验一下。

更多关于使用私有 API 的信息请参考此处:使用 Core Telephony 获取 iPhone 手机号

但是,如果您使用私有API,苹果可能会拒绝您的应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接