【问题标题】:Is it possible to detect LTE connection using iOS SDK?是否可以使用 iOS SDK 检测 LTE 连接?
【发布时间】:2012-04-26 21:36:00
【问题描述】:

我正在使用可达性 API 来检测我当前的连接,但我只能区分 WIFI 和 3G。

我得到以下标志:

LTE:kSCNetworkReachabilityFlagsIsLocalAddress|kSCNetworkReachabilityFlagsIsWWAN|kSCNetworkReachabilityFlagsTransientConnection|kSCNetworkReachabilityFlagsReachable

WIFI:kSCNetworkReachabilityFlagsIsDirect|kSCNetworkReachabilityFlagsReachable

问题在于 LTE 返回与 3G 连接相同的标志。有什么方法可以判断用户当前是LTE还是3G?

【问题讨论】:

  • 您是对网络带来的更高带宽感兴趣,还是对网络本身的类型感兴趣?前者有解决方法,但后者没有。
  • 我想解决方法是简单地尝试下载一些东西并跟踪速度?

标签: ios sdk wireless 3g connectivity


【解决方案1】:

从 iOS 7 开始,您可以使用 CoreTelephony 框架中 CTTelephonyNetworkInfocurrentRadioAccessTechnology 属性来查找此信息。

#import <CoreTelephony/CTTelephonyNetworkInfo.h>

CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new];

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

【讨论】:

  • 有谁知道为什么没有关于currentRadioAccessTechnology 方法的文档? developer.apple.com/library/ios/documentation/…
  • 这个方法添加了iOS7.0但不是添加文档。检查头文件“CTTelephonyNetworkInfo.h”oc @property (nonatomic, readonly, retain) NSString* currentRadioAccessTechnology __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
  • 这仍然没有正式记录,这让我很紧张。我把它放在一个 try catch 中,这样如果它被拿走,我可以有一些默认行为。
【解决方案2】:

我想知道这个隐藏的 Core Telephony API 是否可以为您提供足够的信息,以便您确定您是连接到 LTE 还是速度较慢的技术。

CTRegistrationGetCurrentMaxAllowedDataRate();

这可能值得尝试。

更多关于在此处使用私有 API:iPhone mobile number using Core telephony

但是,我了解到如果您使用私有 API,您的应用将被 Apple 拒绝。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2012-11-24
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多