将iOS 7常量映射到2G、3G、4G、LTE等

13

在iOS 7之前,似乎我们无法确定无线电通信技术......如果我说错了,请纠正我。

考虑到iOS 7中可用的以下常量,是否有人可以验证哪个常量映射到哪个通用标准2G、3G、4G、LTE等?

CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyGPRS          __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyEdge          __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyWCDMA         __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyHSDPA         __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyHSUPA         __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMA1x        __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORev0  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORevA  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORevB  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyeHRPD         __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyLTE           __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);

请参考苹果的可达性(Reachability)示例代码:https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html,适用于iOS 7之前的版本。 - Chris Byatt
在iOS 7之前,无法确定无线电访问技术。而且你可以很容易地自己完成映射。 - rckoenes
1
@ChrisByatt,可达性不仅允许您确定Wifi与WWAN吗?我对iOS非常陌生 :) - Craig
@ChrisByatt 谢谢,我看到了那篇文章,但我正在寻找更明确的内容。 - Craig
如果您正在使用WiFi,可达性无法让您检测移动数据的任何信息。如果您没有连接WiFi,则可以检测您是否拥有移动数据。 - gnasher729
显示剩余2条评论
2个回答

33

实际上,将上述无线电接入标准明确定义为“2G”、“3G”等相当困难。

这是因为“2G”、“3G”、“4G”并不是真正的标准,而是标准的组合,在某些情况下更像市场推广术语。它们也涵盖了核心网络结构,而不仅仅是无线电接入网络,尽管后者更常被讨论。以下是一个非常简单的概述:

  • 1G-模拟移动网络
  • 2G-数字移动网络。多种地区标准和变体(欧洲的GSM、北美的CDMA、日本的PDC等)
  • 3G-最初旨在提供更高速的数据访问,并规范各种接入技术。事实上,根据今天的标准,符合3G速度要求的数据速率相对较低(200kbs),有些进化的2G技术(例如EDGE)有时被称为2.5G,实际上满足3G速度要求。作为参考,原始定义包含在ITU IMT-2000规范中,ITU自己说:“经过十多年的艰苦工作,在ITU的领导下,于2000年做出了历史性的决定:一致批准了第三代系统的技术规范,品牌为IMT-2000。”我认为可以说品牌“IMT-2000”输给了品牌“3G”...
  • 4G-这是符合ITU IMT标准的下一代网络的名称,称为IMT-Advanced。实际上,供应商和运营商正在使用该名称来指代不满足这些标准允许的数据传输速率水平的网络,但只要相对于3G有实质性的性能提升,ITU似乎已经允许这种做法。LTE和WiMAX属于此类。从技术上讲,4G改变了无线电接入技术,放弃了“扩频”系统,并在访问和核心中去除了“电路交换”路径的概念,转向全包IP基础传输(这对于电话网络的一面来说是重大的改变)。

总之,这些都有点令人困惑!如果您感兴趣,ITU有一份很好的文件对此进行了更详细的记录:

http://www.itu.int/ITU-D/tech/FORMER_PAGE_IMT2000/DocumentsIMT2000/What_really_3G.pdf

考虑到上述内容和可能存在多个或备选映射的警告,以下是我认为您正在寻找的大致映射:

  • CTRadioAccessTechnologyGPRS - 2G
  • CTRadioAccessTechnologyEdge - 2G(有时称为2.5G)
  • CTRadioAccessTechnologyWCDMA - 3G
  • CTRadioAccessTechnologyHSDPA - 3G(有时称为3.5G)
  • CTRadioAccessTechnologyHSUPA - 3G
  • CTRadioAccessTechnologyCDMA1x - 2G
  • CTRadioAccessTechnologyCDMAEVDORev0 - 3G
  • CTRadioAccessTechnologyCDMAEVDORevA - 3G
  • CTRadioAccessTechnologyCDMAEVDORevB - 3G
  • CTRadioAccessTechnologyeHRPD - 3G(或3.5 - eHRPD旨在实现从CDMA EVDO向LTE的迁移)
  • CTRadioAccessTechnologyLTE - 4G(允许根据ITU的规定称为4G,如上所述)

最后,如果您只关心连接是否(通常...)快速或缓慢,则以下答案提供了一种不错的方法: https://dev59.com/U2gu5IYBdhLWcg3w0qRK#20840971


0

从我的今天的测试中得出结论:

CTRadioAccessTechnologyeHRPD 用于美国Verizon的3G;CTRadioAccessTechnologyHSDPA 用于美国T-Mobile的4G(非LTE)。


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