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

2024-04-10 08:20

本文主要是介绍运营商名称 是如何显示到 手机通知栏上的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

其实,这一切都与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.chinasem.cn/article/890534

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount