运营商名称 是如何显示到 手机通知栏上的?

news2024/12/23 5:20:27

在我们日常使用手机的过程中,经常会在通知栏或设置菜单中看到特定的运营商名称,例如"中国移动"、"中国联通"或"中国电信"等。
那么,这些运营商的名称是如何出现在我们手机上的呢?手机又是如何区分不同运营商的网络呢?当我们漫游到海外时,手机显示的是国外还是国内的运营商名称呢?

其实,这一切都与PLMN(Public Land Mobile Network,公共陆地移动网络)SPN(Service Provider Name,服务提供商名称)有关。
今天,我们就来揭秘手机运营商名称的显示规则。

  • PLMN编码 与 SPN服务提供商名称
  • PLMN编码 与 PLMN Name的数据来源
  • SPN 服务提供商的显示规则
  • NITZ协议结构(附录)
  • 手机通知栏 运营商名称 显示规则总结

一、PLMN与SPN

首先,让我们来了解一下PLMN和SPN的概念。

  • PLMN
  • SPN

1.1 PLMN

PLMN(Public Land Mobile Network)是一段数字编码,用于识别全球所有移动蜂窝网络,它由MCC(Mobile Country Code,移动国家代码)MNC(Mobile Network Code,移动网络代码)两部分组成。

MCC 和 MNC:

MCC提供了国家/地区级别的标识,而MNC则提供了特定运营商或网络的标识。这种组合的唯一性使得每个运营商的网络都可以被准确地识别和区分。

  • PLMN(Public Land Mobile Network,公共陆地移动网络编码)
  • MCC(Mobile Country Code,移动国家代码)
  • MNC(Mobile Network Code,移动网络代码)

PLMN=MCC+MNC

PLMN 编码举例:

国内三大运营商PLMN编码举例如下:

PLMN运营商
46000中国移动
46001中国联通
46002中国移动
46003中国电信
46005中国电信
46006中国联通
46007中国移动

通过解析PLMN中的MCC和MNC,我们可以确定一个移动网络的所属国家/地区和特定运营商。

HPLMN与VPLMN:

根据手机接入网络情况,可以把PLMN分为HPLMN(Home PLMN,归属PLMN)VPLMN(Visited PLMN,访问PLMN)的概念。

  • HPLMN(Home PLMN,归属PLMN)是指移动通信用户所属的本地公用陆地移动网络,是“归属”网络的概念。
    比如在中国移动营业厅办理了一张移动手机卡,该卡与中国移动网络建立了归属关系,这个网络就是用户的HPLMN。

  • VPLMN (Visited PLMN,访问PLMN)是指用户在漫游状态下访问的非归属网络,即“拜访”网络。
    比如,用户漫游到了其他国家,手机接入了国外的运营商,这个运营商网络的PLMN与手机中SIM卡中IMSI中包含的PLMN不一致,此时这个网络就被称为VPLMN。

1.2 SPN

SPN(Service Provider Name,服务提供商名称)是一段中文或英文字符,例如"中国移动"或"CMCC"。
SPN指的是服务提供商名称,在手机或移动设备的用户界面中,即显示在信号栏、设置菜单或其他位置上的移动网络运营商的标识。

SPN的显示规则与当前注册网络的归属状态有关,根据3GPP TS22.101规范:

  • 如果当前注册网络为HPLMN(本网注册),则显示SIM卡中配置的SPNHPLMN对应的PLMN Name
  • 如果当前注册网络为VPLMN(异网漫游),则显示Roaming PLMN编码对应的PLMN Name(漫游网络名称)。
  • 此外,根据SPN的配置和显示规则,手机漫游时:可能只显示Roaming PLMN Name,也可能Roaming PLMN Name和SPN同时显示

以上提到的三种情况,后续会进行详细说明,这里仅给出大概的显示规则。

二、PLMN编码与PLMN Name的数据来源

上文提到了PLMN编码PLMN Name,这里我们介绍一下其数据来源以及映射关系

  • PLMN 编码的数据来源
  • PLMN Name 的数据来源
  • PLMN与PLMN Name映射关系配置表

2.1 PLMN的数据来源

PLMN编码有两个来源,分别为运营商基站广播的PLMN编码SIM卡中存储的PLMN编码

  • 运营商基站的广播信号,会广播当前网络运营商的PLMN编码。
  • 手机SIM卡中IMSI中会包含该SIM卡的运营商的PLMN编码。

2.2 PLMN Name的数据来源

依据3GPP TS22.101 A.3Country/PLMN indication规范,PLMN Name有三个来源

  • 来源自用户移动设备中存储的PLMN Name (这个存储的PLMN来源自上次连接运营商基站时,基站广播的信息);
  • 运营商基站 NITZ 协议广播的PLMN Name(可选基站广播);
  • 存储在用户的USIM卡中的SPN

并且三种数据的优先级如下:

USIM卡SPN > 基站广播NITZ > 移动手机存储的PLMN Name

3GPP TS22.101 A.3Country/PLMN indication

2.3 PLMN与SPN映射关系表

前文提到过,基站 NITZ 协议广播是一个可选广播(因此NITZ广播可能并不存在)。
若运营商基站未实现NITZ协议,该情况下手机终端只能获取到基站广播的PLMN编码SIM卡存储的SPN

  • 基站广播的PLMN编码
  • SIM卡中存储的PLMN编码对应的SPN

那么这里就有一个问题:若当前手为漫游Roaming网络,该如何获取PLMN编码对应的PLMN Name ?

这里就涉及到了一个由由ITU维护的PLMN与SPN映射关系表

Mobile Network Codes (MNC) under geographic Mobile Country Codes (MCC)

在Android手机商,手机Rom厂商则在Android手机system/etc/ 路径下,存放着一个spn-conf.xml配置列表。由Google和各手机产商进行修改和维护

Android手机SPN配置文件目录

system/etc/spn-conf.xml

在实际的Android手机Framework研发过程中,研发人员根据当前网络的PLMN编码spn-conf.xml中查询对应的SPN

三、SPN显示规则

前文提到过,显示在用户手机通知栏的运营商名称,可以是SPN也可以是PLMN Name甚至可以是PLMN Name-SPN:

  • SPN与PLMN Name显示哪一个
  • SPN与PLMN Name同时显示的规则

3.1 SPN与PLMN Name显示哪一个

根据规范3GPP TS22.101 A.4Service Provider Name indication:

  • 若当前注册网络为归属PLMN 则展示SIM卡中配置的SPN(Service Provider Name,服务提供商名称)
  • 若当前注册网络非归属PLMN(Roaming PLMN),则显示Registered PLMNPLMN Name

image.png

3.2 SPN与PLMN同时显示

根据 3GPP TS31.102 4.2.12EFSPN (Service Provider Name):

若当前注册网络为归属PLMN有SPN就要显示SPN

  • 如果SPN的B1=1,则需要同时显示Registered PLMN
  • 如果SPN的B1=0,则不需要同时显示Registered PLMN

若当前注册网络非归属PLMN(Roaming PLMN),则显示Registered PLMNPLMN Name

  • 如果SPN的B2=0,则需要同时显示SPN
  • 如果SPN的B2=1,则不需要同时显示SPN

image.png

四、NITZ协议

这一节是对NITZ协议结构的补充,对于非专业人员是没有必要详细了解的。

承载NITZ信息的GMM Information Message在运营商网络的部署是可选的,并不是每家运营商基站都有部署。
其对应的消息格式可根据3GPP TS24.008 9.4.19GMM Information:规范进行查看:

3GPP TS24.008 9.4.19GMM Information

3GPP TS24.008 10.5.3.5a Network Name:

3GPP TS24.008 10.5.3.5a Network Name

五、手机运营商名称显示规则总结

当手机连接到某家运营商网络时,用户会 从SIM卡 和 从基站 来获取 PLMN编码 和 PLMN Name:

  • SIM卡中存储了用户 PLMN(Public Land Mobile Network)SPN(Service Provider Name 服务提供商名称)
  • 运营商基站广播了自身网络的PLMN编码PLMN Name信息(通过NITX协议):

SIM卡存储SPN 基站广播PLMN代码

手机接入HPLMN时,显示SIM卡中存储的SPN(Service Provider Name)。手机接入VPLMN时,显示基站广播 PLMN编码 对应的PLMN Name:

若当前注册网络为归属PLMN,SIM卡中有SPN就显示SPN

  • 如果SPN的B1=1,则需要同时显示Registered PLMN Name
  • 如果SPN的B1=0,则不需要同时显示Registered PLMN Name

若当前注册网络非归属PLMN(Roaming PLMN),则显示Roaming PLMN编码对应的PLMN Name

  • 如果SPN的B2=0,则需要同时显示SPN
  • 如果SPN的B2=1,则不需要同时显示SPN

手机上运营商名称显示规则

六、参考

3GPP TS22.101 A.3Country/PLMN indication:
https://www.3gpp.org/ftp/specs/archive/22_series/22.101

3GPP TS22.101 A.4Service Provider Name indication:
https://www.3gpp.org/ftp/specs/archive/22_series/22.101

3GPP TS31.102 4.2.12EFSPN (Service Provider Name):
https://www.3gpp.org/ftp/specs/archive/31_series/31.102

3GPP TS24.008 9.4.19GMM Information:
https://www.3gpp.org/ftp/specs/archive/24_series/24.008

ITU Mobile Network Codes 2023:
https://www.itu.int/dms_pub/itu-t/opb/sp/T-SP-E.212B-2023-PDF-E.pdf

运营商名字是如何获取的?
https://www.e-learn.cn/topic/3031894

Android运营商名称显示之PLMN与SPN显示规则:
https://blog.csdn.net/u010961631/article/details/50682406

spn-conf.xml 运营商名字显示:
https://blog.csdn.net/sjz4860402/article/details/79835663

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1581207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

15. 【Android教程】按钮 Button/ImageButton

在前面两章我们讲了 TextView,它是一个纯输出的控件;而 EditText 在 TextView 基础之上加入了简单的输入功能;今天要讲的 Button 是一个和用户互动感很强的控件,从今往后不再是单纯的文本展示,我们可以通过 TextView、…

汽车4S行业的信息化特点与BI建设挑战

汽车行业也是一个非常大的行业,上下游非常广,像主机厂,上游的零配件,下游的汽车流通,汽车流通之后的汽车后市场,整个链条比较长。今天主要讲的是汽车流通,汽车4S集团。一个汽车4S集团下面授权代…

微信小程序使用iconfont

进入iconfont,添加至项目 进入项目,点击生成代码,或更新代码 点击打开样式 复制内容到小程序的style文件夹下 最后引入到app.wxss

C++中的string设计成模板的原因

查看string的文档可以发现&#xff0c;string被设计成模板&#xff0c;为什么这样设计呢&#xff1f; string文档链接&#xff1a;<string> - C Reference (cplusplus.com) 随着计算机的发展&#xff0c;出现了很多编码&#xff08;用于管理字符&#xff09;&#xff0c…

https的配置和使用(以腾讯云为例)

1、注册域名 2、获取证书 3、下载证书 下载下来的证书所有格式 4、在服务器上下载nginx并配置 nginx的配置文件 如下 server {listen 80;listen 443 ssl;server_name delegate.letspiu.net.cn;ssl on; #开启ssl#指定证书位置ssl_certificate /etc/ss…

集成 LlamaIndex 和 Qdrant 相似性搜索以进行患者记录检索

介绍 由于医疗技术、数字健康记录(EHR)和可穿戴健康设备的进步,医疗领域目前正在经历数据的显着激增。有效管理和分析这些复杂多样的数据的能力对于提供定制医疗保健、推进医学研究和改善患者健康结果至关重要。矢量数据库是专门为高效处理和存储多维数据而定制的,作为一系…

Golang | Leetcode Golang题解之第17题电话号码的字母组合

题目&#xff1a; 题解&#xff1a; var phoneMap map[string]string map[string]string{"2": "abc","3": "def","4": "ghi","5": "jkl","6": "mno","7": &…

爬虫 BeautifulSoup模块

爬虫 BeautifulSoup模块 【一】介绍 【1】说明 BeautifulSoup库是python的一个第三方库&#xff0c;主要用于处理HTML和XML文档他提供了一些简单的、python式的函数来解析、导航、搜索以及修改分析树&#xff0c;使得从网页抓取的数据变得简单高效BeautifulSoup自动将输入文…

Debian安装1panel管理面板教程-最新

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 1Panel面板是一个强大的服务器管理工具&#xff0c;它通过提供一站式管理、易于使用的界面、高度的可定制性、安全可靠的性能、强大的扩展性以及活跃的社区支持&#xff0c;为用户提供了一个高效、便捷的管理解决方案…

「2024」React 状态管理入门

概念 简单来说&#xff0c;状态指的是某一时刻应用中的数据或界面的呈现。这些数据可能包括用户填写表单的信息、应用内的用户偏好设置、应用的页面/路由状态、或者任何其他可能改变UI的信息。 状态管理是前端开发中处理用户界面(UI)状态的过程&#xff0c;在复杂应用中尤其重…

如何让MacOS「终端」走代理

在 MacOS 操作系统中&#xff0c;默认情况下&#xff0c;终端命令行不会通过代理进行网络连接。这导致在应用软件研发过程中&#xff0c;许多需要通过命令行下载安装的软件或依赖包无法成功安装。经常出现Failed to connect to xxx port 443 after 75329 ms: Couldnt connect t…

Window安装PostgresSQL

PostgreSQL 安装参考&#xff1a;Windows下安装PostgreSQL_window 安装postgresql-CSDN博客 安装好后打开pgAdmin4 配置Navicat连接PostgresSQL 找到安装目录文件 pg_hba.conf 修改配置增加&#xff1a; 修改前&#xff1a; # TYPE DATABASE USER ADDRES…

联想电脑开启虚拟化失败,开启虚拟化却提示还没有开启虚拟化

安装虚拟机的时候&#xff0c; 电脑要开启虚拟化&#xff0c; Intel VT&#xff0c; 去BIOS开启了&#xff0c; 但是依然报错&#xff0c;说虚拟化处于禁用状态。 解决方案&#xff1a; 去联想官方&#xff0c;下载BIOS更新包&#xff0c;更新BIOS。 更新文档&#xff1a; 联…

网络安全---Packet Tracer - 配置扩展 ACL

一、实验目的 在Windows环境下利用Cisco Packet Tracer进行 配置防火墙操作。 二、实验环境 1.Windows10、Cisco Packet Tracer 8.2 2.相关的环境设置 在最初的时候&#xff0c;我们已经得到了搭建好的拓扑模型&#xff0c;利用已经搭建好的拓扑模型&#xff0c;进行后续的…

3D Web轻量化引擎HOOPS Commuicator如何从整体装配中创建破碎的装配零件和XML?

前言 虽然可以从某些本机CAD格式&#xff08;其子组件驻留在单独的文件中&#xff0c;例如CATIA V5、Creo - Pro/E、NX或SolidWorks&#xff09;创建破碎装配&#xff0c;但无法从整体装配文件&#xff08;例如IFC、Revit&#xff09;创建或3DXML。 本文介绍了一个示例&#…

前端试题3#记录

1、vue3ts如果使用props参数要使用什么函数 interface Search {background : stringcolor : string } //defineProps 通过泛型参数来定义 props 的类型,给 props 设置默认值&#xff0c;需要使用 withDefaults 函数 const props withDefaults(defineProps<Search>(), {…

鹅厂实习offer

#转眼已经银四了&#xff0c;你收到offer了吗# 本来都打算四月再投实习了&#xff0c;突然三月初被wxg捞了&#xff08;一年前找日常实习投的简历就更新了下&#xff09;&#xff0c;直接冲了&#xff0c;流程持续二十多天&#xff0c;结果是运气还不错&#xff0c;应该是部门比…

【IO 模型】Unix IO 介绍

IO 模型&#xff08;一&#xff09; Unix IO 一个输入操作共包含两个阶段&#xff1a; 等待数据准备好从内核将数据复制到进程 对于一个套接字上的输入操作&#xff0c;通常第一步是等待数据从网络中到达&#xff0c;当数据到达时&#xff0c;先将数据复制到内核缓冲区中&a…

REST API实战演练之JavaScript使用Rest API

咱们前面讲了一下如何创建REST API 假期别闲着&#xff1a;REST API实战演练之创建Rest API-CSDN博客 又讲了java客户端如何使用REST API 假期别闲着&#xff1a;REST API实战演练之客户端使用Rest API-CSDN博客 接下来咱们看看JavaScript怎么使用REST API。 一、新建一个…

软件杯 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满…