jjzjj

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

coder 2023-07-27 原文

在 iOS 7 之前,我们似乎无法确定 radio 接入技术......如果我错了,请纠正我。

考虑到 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);

最佳答案

实际上很难将上述 radio 接入标准明确映射到“2G”、“3G”等。

这是因为“2G”、“3G”、“4G”并不是真正的标准,而是标准的分组,在某些情况下实际上是更多的营销术语。它们还涵盖了核心网络架构,而不仅仅是 radio 接入网络,尽管后者的讨论更为普遍。一个非常简单的概述:

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

所以总而言之,这有点令人困惑!如果您有兴趣,有一份很好的 ITU 文件可以更详细地说明这一点:

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

考虑到上述情况,以及可能存在多个映射或替代映射的警告,下面是我认为您正在寻找的粗略映射:

  • CT radio 接入技术GPRS - 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://stackoverflow.com/a/20840971/334402

关于ios - 将 iOS 7 常量映射到 2G、3G、4G、LTE 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405566/

有关ios - 将 iOS 7 常量映射到 2G、3G、4G、LTE 等的更多相关文章

  1. ruby-on-rails - 未初始化的常量 Psych::Syck (NameError) - 2

    在我的gem中,我需要yaml并且在我的本地计算机上运行良好。但是在将我的gem推送到ruby​​gems.org之后,当我尝试使用我的gem时,我收到一条错误消息=>"uninitializedconstantPsych::Syck(NameError)"谁能帮我解决这个问题?附言RubyVersion=>ruby1.9.2,GemVersion=>1.6.2,Bundlerversion=>1.0.15 最佳答案 经过几个小时的研究,我发现=>“YAML使用未维护的Syck库,而Psych使用现代的LibYAML”因此,为了解决

  2. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  3. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  4. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  5. ruby-on-rails - ActionController::RoutingError: 未初始化常量 Api::V1::ApiController - 2

    我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc

  6. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  7. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  8. ruby - 在 Ruby 中重新分配常量时抛出异常? - 2

    我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案

  9. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  10. ruby-on-rails - environment.rb 中设置的常量在开发模式中消失 - 2

    了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl

随机推荐