Is it possible to detect LTE connection using iOS

2020-05-24 05:01发布

I'm using the reachability API to detect my current connection, but I can only distinguish between WIFI and 3G.

I get the following flags:

LTE: kSCNetworkReachabilityFlagsIsLocalAddress|kSCNetworkReachabilityFlagsIsWWAN|kSCNetworkReachabilityFlagsTransientConnection|kSCNetworkReachabilityFlagsReachable

WIFI: kSCNetworkReachabilityFlagsIsDirect|kSCNetworkReachabilityFlagsReachable

The problem is that LTE returns the same flags as a 3G connection. Is there any way to determine whether the user currently has LTE or 3G?

2条回答
Emotional °昔
2楼-- · 2020-05-24 05:47

As of iOS 7, you can find this out using the currentRadioAccessTechnology property of CTTelephonyNetworkInfo in the CoreTelephony framework.

#import <CoreTelephony/CTTelephonyNetworkInfo.h>

CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new];

if ([networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
    // ...
}
查看更多
Lonely孤独者°
3楼-- · 2020-05-24 06:03

I wonder if this hidden Core Telephony API can provide you with enough info for you to determine whether you're attached to an LTE or a slower technology.

CTRegistrationGetCurrentMaxAllowedDataRate();

It might be worth experimenting with.

More about using private APIs here: iPhone mobile number using Core telephony

However, I've read that your app will be rejected by apple if you use private APIs.

查看更多
登录 后发表回答