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

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

相关文章

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

据阿谱尔APO Research调研显示,2023年全球髓内钉市场销售额约为4.7亿美元

根据阿谱尔 (APO Research)的统计及预测,2023年全球髓内钉市场销售额约为4.7亿美元,预计在2024-2030年预测期内将以超过3.82%的CAGR(年复合增长率)增长。 髓内钉市场是指涉及髓内钉制造、分销和销售的行业。髓内钉是一种用于整形外科手术的医疗器械,用于稳定长骨骨折,特别是股骨、胫骨和肱骨。髓内钉通常由不銹钢或钛等材料制成,并插入骨的髓管中,以在愈合过程中提供结构支

vue+elementUI下拉框联动显示

<el-row><el-col :span="12"><el-form-item label="主账号:" prop="partyAccountId" :rules="[ { required: true, message: '主账号不能为空'}]"><el-select v-model="detailForm.partyAccountId" filterable placeholder="

说一说三大运营商的流量类型,看完就知道该怎么选运营商了!

说一说三大运营商的流量类型,看完就知道该怎么选运营商了?目前三大运营商的流量类型大致分为通用流量和定向流量,比如: 中国电信:通用流量+定向流量 电信推出的套餐通常由通用流量+定向流量所组成,通用流量比较多,一般都在100G以上,而且电信套餐长期套餐较多,大多无合约期,自主激活的卡也是最多的,适合没有通话需求的朋友办理。 中国移动:通用流量+定向流量 移动推出的套餐通常由通用流量+定向

Python利用qq邮箱发送通知邮件(已封装成model)

因为经常喜欢写一些脚本、爬虫之类的东西,有需要通知的时候,总是苦于没有太好的通知方式,虽然邮件相对于微信、短信来说,接收性差了一些,但毕竟免费,而且支持html直接渲染,所以,折腾了一个可以直接使用的sendemail模块。这里主要应用的是QQ发邮件,微信关注QQ邮箱后,也可以实时的接收到消息,肾好! 好了,废话不多说,直接上代码。 # encoding: utf-8import lo

通知中心设置一个键盘的捕捉事件

//通知中心监听键盘的frame发生改变

温湿度采集及OLED显示

目录 软件I2C和硬件I2C每隔2秒钟采集一次温湿度数据,显示到OLED上,同时通过串口发送到上位机的“串口助手”软件 软件I2C和硬件I2C "I2C"代表Inter-Integrated Circuit,是一种用于在数字电路之间进行通信的串行通信协议。软件I2C和硬件I2C是两种实现这种协议的方式。 软件I2C是通过软件来模拟I2C通信协议的实现方式。在这种情况下,微控制

vscode python pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

在vscode中控制台运行python文件出现:无法将"pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 使用vscode开发python,需要安装python开发扩展: 本文已经安装,我们需要找的是python安装所在目录,本文实际路径如下: 如果在本文路径中没有此目录,请尝试在C盘中搜索 python,搜索到相关python目录后,点击Python 3.9进入目录,

Linux之时间显示

在linux中使用使用date的方式来显示时间,但是如果想按照自己想要的格式展示,那就需要加上一点参数了 显示当前时间 date 2024年 06月 23日 星期日 23:21:42 CST 显示当前年份 date +%Y 2024 显示当前月份 date +%m 6 显示当前日期 date +%d 23 自定义显示格式 date "+%Y-%m-%d

html--好看的手机充值单页

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>线上充值-首页</title><meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport" /><meta content