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

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

其实,这一切都与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.mzph.cn/news/804266.shtml

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

相关文章

软信天成:如何通过5个步骤获得高层对主数据管理项目的支持

如今,全球各地的组织正在采用主数据管理(MDM)以应对日益严峻的数据问题。然而,成功地实现 MDM 项目并非易事,这需要得到高层的全力支持。下面,软信天成将详细介绍五步策略,协助您获得高层对MDM项…

连接mysql或mariaDB报错:is not allowed to connect to this MariaDB server

1.报错信息:Host ‘192.168.3.91’ is not allowed to connect to this MariaDB server 2.报错原因:因为没有远程连接数据库的权限 一般为新创建数据库或新创建的用户没有远程连接数据库的权限,需要进行授权 # mysql -u root -p # use mysql…

属于我们Go语言的toString!

在 Go 语言中,类似于 Java 中的 toString() 方法,可以通过实现 String() 方法来自定义类型的字符串表示形式。这种机制使得在打印自定义类型的值时能够输出更加可读性高的字符串。在本文中,我们将探讨如何在 Go 中实现类似的功能,…

SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现OOA-TCN-BiGRU-Attention鱼鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

基于springboot实现常州地方旅游管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现旅游管理系统演示 摘要 随着旅游业的迅速发展,传统的旅游信息查询方式,已经无法满足用户需求,因此,结合计算机技术的优势和普及,针对常州旅游,特开发了本基于Bootstrap的常州地方旅游管…

Python2.7和Python3.6共存的环境中,如何使用 Python 3.6 的 pip 安装其他包(如scikit-learn)

在开发环境中同时安装多个 Python 版本是一种常见的情况,本文将介绍在Python2.7和Python3.6共存的环境中,如何使用 Python 3.6 的 pip 安装其他包(如scikit-learn)。 步骤: 确定 Python 3.6 的 pip 路径: …

MacOS初识SIP——解决快捷指令sh脚本报错Operation not permitted

前言 因为一些原因,设计了一套快捷指令,中间涉及到一个sh脚本的运行,通过快捷指令运行时就会报错:operation not permitted 奇怪的是在快捷指令窗口下运行一切正常,但是从其他地方直接调用,例如通过Comma…

WebGL入门

WebGL采用HTML5中新引入的<canvas>元素(标签),它定义了网页上的绘图区域。 1、Canvas是什么 在HTML5出现之前,如果你想在网页上显示图像,只能使用HTML提供的原生方案<img>标签。用这个标签显示图像虽然简单,但只能显示静态的图片,不能进行实时绘制和渲染。…

微服务 - (狂神)

什么是微服务&#xff1a; 微服务方案&#xff1a; 1. SpringCloud NetFlix 2. Dubbo 3. SpringCloud Alibaba 解决了什么问题&#xff1a; 1. 服务过多&#xff0c;客户端怎么访问 2. 服务过多&#xff0c;服务间怎么传值 3. 服务过多&#xff0c;如何治理 4. 服务过多…

【Flutter】三个Channel(Android-java / Ios-swift)

Channel 实现与原生通信 【1】MethodChannel flutter MethodChannel官方文档 通过MethodChannel来传递数据&#xff0c;调用方法 案例 分别调用Android和Ios原生的获取电量的方法 Flutter端 实例一个MethodChannel&#xff0c; 唯一标识name&#xff0c;定义方法名称get…

UVA814 邮件传输的代理交互 解题报告

UVA814 邮件传输的代理交互 解题报告 题目链接 https://vjudge.net/problem/UVA-814 题目大意 本题的任务为模拟发送邮件时MTA&#xff08;邮件传输代理&#xff09;之间的交互。所谓MTA&#xff0c;就是email地址格式usermtaname的“后面部分”。当某人从user1mta1发送给另…

JavaScript ECMAScript标准的与时俱进:从ES6至ES14的革新之路与关键技术特性剖析

ECMAScript&#xff08;通常缩写为ES&#xff09;是一种标准化的脚本语言规范&#xff0c;由ECMA International&#xff08;前身为European Computer Manufacturers Association&#xff0c;欧洲计算机制造商协会&#xff09;制定。自1997年发布首个版本以来&#xff0c;ECMAS…

设计模式之创建型模式---建造者模式

文章目录 建造者模式概述经典的建造者模式建造者模式的变种总结 建造者模式概述 建造者模式是一种广泛使用的设计模式&#xff0c;在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式&#xff1a;可复用面向对象软件基础》中被提及&#xff0c;它的…

搭建前后端的链接(java)

搭建前后端的链接(java) 一.前提 1.1 javaEE 搭建前后端的链接首先需要用到javaEE&#xff0c;也就是java企业版&#xff0c;也就是java后端(后端javaSE) 利用javaEE和前端交互&#xff0c;javaSE和数据库交互&#xff0c;javaSE和javaEE之间再进行交互就实现了前后端的交互…

【vim 学习系列文章 19 -- 映射快捷键调用两个函数 A 和B】

请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 映射快捷键调用两个函数 映射快捷键调用两个函数 在 Vim 中&#xff0c;如果想通过按下 gcm 来调用两个函数&#xff0c;比如 FunctionA 和 FunctionB&#xff0c;需要先定义这两个函数&#xff0c;然后创建一个映射。这个映…

设计模式|单例模式(Singleton Pattern)

文章目录 适用场景优缺点优点缺点 示例分布式部署情况下&#xff0c;保证单例常见面试题 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保类只有一个实例&#xff0c;并提供一个全局访问点来访问这个实例。 适用场景 单例模式在许多…

2024-04-09 问AI: 在深度学习中,dropout层是什么?

文心一言 在深度学习中&#xff0c;Dropout层是一种正则化技术&#xff0c;用于防止神经网络过拟合。它通过在训练过程中随机地将一部分神经元的输出设置为0&#xff0c;来减少神经元之间的复杂共适应性&#xff0c;使得模型更加健壮&#xff0c;提高泛化能力。 具体来说&…

语音识别(录音与语音播报)

语音识别&#xff08;录音与语音播报&#xff09; 简介 语音识别人工智能技术的应用领域非常广泛&#xff0c;常见的应用系统有&#xff1a;语音输入系统&#xff0c;相对于键盘输入方法&#xff0c;它更符合人的日常习惯&#xff0c;也更自然、更高效&#xff1b;语音控制系…

JVM—垃圾收集器

JVM—垃圾收集器 什么是垃圾 没有被引用的对象就是垃圾。 怎么找到垃圾 引用计数法 当对象引用消失&#xff0c;对象就称为垃圾。 对象消失一个引用&#xff0c;计数减去一&#xff0c;当引用都消失了&#xff0c;计数就会变为0.此时这个对象就会变成垃圾。 在堆内存中主…

C++设计模式:抽象工厂模式(七)

1、定义与动机 抽象工厂定义&#xff1a;提供一个接口&#xff0c;让该接口负责创建一系列“相关或者相互依赖的对象”&#xff0c;无需指定它们具体的类动机&#xff1a; 在软件系统中&#xff0c;经常面临着“一系列相互依赖的对象”的创建工作&#xff1b;同时&#xff0c;…