短信规范

本部分分为两个部分:

  1. 内容 - ELS 消息的内容。
  2. 格式 - 这些邮件的发送方式和解码方式(如果需要)。

内容

ELS V1

通过短信发送的 ELS 消息符合最新的 ETSI AML 规范。这个 称为 ELS V1,这是 ELS 合作伙伴选择的最常用方法。通过 以下是最相关的部分:

键名 单位 示例
A"ML 版本 - 1
lt 纬度 +37.42175
lg 经度 -122.08461
top 位置的时间戳 yyyyMMddHHmmss(UTC 时间) 20150613010948
rd 位置信息精确度 20.0
lc 位置信息置信度 置信度百分比 68
pm 定位方法(Wi-Fi、GPS、小区、空) “W”“G”“C”“N” W
si IMSI(仅包含原始 IMSI 的前 6 位数字,其余几位) 替换为 0) - 123456000000000
ei IMEI - 355458061005220
mcc 网络 MCC - 310
mnc 网络 MNC - 260
ml 邮件长度(包括邮件长度和标头) - 123

定位方法

位置为空

示例

没有位置信息:

A"ML=1;lt=+00.00000;lg=+000.00000;rd=N;top=20220131173734;lc=0;pm=N;si=234159000000000;ei=123456789012345;mcc=234;mnc=15;ml=127

计算出的位置:

A"ML=1;lt=+51.53321;lg=-0.12601;rd=14;top=20220131171748;lc=68;pm=W;si=234159000000000;ei=123456789012345;mcc=234;mnc=15;ml=126

ELS Beta 版

ELS Beta 版是一些合作伙伴使用的实验性格式, 让合作伙伴有机会尝试不同领域的内容。

以下是最相关的部分:

键名 单位 示例
A"ML 版本 - 2
en 紧急电话号码 - 911
et 紧急呼叫时间戳 UNIX 纪元时间(以秒为单位)(整数) 1593187189
lo 位置(纬度、经度、精确度)- 纬度和经度必须 被截断至小数点后 5 位,精度为小数点后 1 位 - 精度为 0 表示未知 度(浮点数)、度数(浮点数)、米(浮点数) 37.42175、122.08461、20.1
lt 定位时间(相对于紧急时间)- 此字段可以忽略 如果不存在位置(“lo”)字段或无时间戳(“et”)字段 展示 秒(整数) 5
lc 位置信息置信度 置信度百分比(整数) 68
lz 垂直位置(海拔高度、垂直精确度)- 此字段可以是 如果不存在位置(“lo”)字段,则会被忽略 - 所有字段均截断至小数点后 1 位;精确度为 0 表示未知 米(浮点数)、米(浮点数) -10.1、10.1
ls 位置来源(Wi-Fi、小区、GPS、一体化、未知)- 此字段可能是 如果不存在位置(“lo”)字段,则被忽略 “W”“G”“C”“F”“U” W
ei IMEI - 355458061005220
nc 网络 MCC/MNC - 310260
hc 家庭 MNC/MNC - 310260
lg 语言标签 IETF BCP 47 en-US

置信度

海拔高度(Z 轴)

ELS 会在 ELS Beta 版消息中报告垂直位置和精确度。海拔高度:lz 以高于 WGS84 参考椭球体的米为单位报告(WGS 是参考 GPS 使用的世界大地测量系统)和精确度(以米为单位,海拔高度、垂直方向) 准确率。如果不存在位置信息 (lo) 字段,系统可能会忽略此字段。全部 字段会截断到小数点后 1 位,精度 0.0 表示 unknown。垂直精确度的定义与位置精确度相同,并且 置信度百分位由合作伙伴设置。默认值设置为 68%。 自信。有关详情,请参阅 Android 文档 getVerticalAccuracyMeters() 提供的。

示例

位置尚未计算的情况:

A"ML=2;en=911;et=1643816841;ei=123456789012345;nc=23415;hc=23415

位置计算成功的情况:

A"ML=2;en=911;et=1643816929;lo=51.53321,-0.12601,14.7;lt=6;lc=68;lz=77.6,1.0;ls=W;ei=123456789012345;nc=23415;hc=23415

表现形式

可采用以下格式通过短信发送 ELS 信息:

  • 短信:普通短信。此格式从以下日期开始受支持: Android P。
  • 数据短信:短信的内容与短信完全相同,但是 进行编码(详情请参阅下文)。此格式 与 ELS 兼容的 Android 设备。

短信

阅读和解析文本短信相对简单。大量移动设备 运营商提供此服务,还可以为您提供推送或拉取 API, 发送到标准电话号码的短信内容。

数据流量短信

从 Android P 开始,系统就支持常规文本短信格式。较早 设备将使用需要解码的数据短信发送 ELS 消息。ELS 数据 短信使用 GSM 03.38 7 位默认字符集进行编码,然后 设置为数据短信的二进制载荷。

下文将介绍数据短信(与普通短信)的确切定义。 有关 GSM 03.38 7 位编码的确切定义,请参阅 3GPP 23.038(具体请参阅第 6.1.2.1.1 节)。

解码数据短信

对于 Google 将短信用于 ELS 的情况,ELS 仅关注 从手机向移动服务中心 (SMSC) 发送短信 - 短信提交类型 消息。SMSC 应该能够顺利接收这些消息 它们是常规短信标准的一部分(不过,在实践中,我们观察到 涉及从基础架构设置和政策到 难以正确解码数据短信)。在下文中,ELS 会将 从手机向 SMSC 发送 SMS-SUBMIT 信息,遵循常规短信方式 标准 (GSM 3.40)。ELS 将数据短信定义为常规短信的子集,且:

  1. 在短信标头中设置了 User-Data-Header-Indicator 标志( GSM 03.40 或 3GPP 23.040 消息的第一个八位字节)
  2. 在短信的用户数据中包含 User-Data-Header
  3. User-Data-Header 包含应用端口地址 信息元素标识符 (IEI)

ELS 必须采用这种方式发送短信,而不是普通短信 可确保 ELS 数据短信不会出现在 Android 设备的 消息应用。稍后,我们展示了一个经过编码的短信示例,以便更好地解释这一点。

请注意,我们没有在此处指定具体的数据编码方案 (DCS)。DCS 用于标识“用户数据”细分中的编码。不过,对于 在可预见的未来,Data-Coding-Scheme 将始终设置为 8 位数据, 可提供最大灵活性,且实际数据本身将使用 GSM 03.38 7 位默认字母表。因此,每个 7 位编码元素 只占用 7 位,而不占用 8 位。

假设用户数据段上限为 140 个字节,且 包含端口信息的 User-Data-Header 的大小下限为 7 个字节; 最多保留 133 个字节(152 个 7 位编码元素)来对 真正的紧急消息这些字节可能会被解码,以发现 ELS 数据短信 消息。

示例

因此,在解码此示例数据短信后,得到的是二进制用户数据。 以下十六进制字符串:

415193D98BEDD8F4DEECE6A2C962B7DA8E7DEEB56232990B86A3D9623B39B92783EDE86F784F068BD560B6D80C1683E568B81D7BDCB3E176F076EFB89BA77B39DCCD56A3C966B15D39DD9BD570B2590E56CBC168B21A4DB66B8FC7BD590CB66BBBC73D990DB66BB37B31D94CC12CBBCF74B40E1493CD1A

解码 GSM 03.38

以下示例对前几个八位字节进行解码,其余八位字节保留为 进行练习我们建议参考 3GPP 23.038,并使用许多 实用的在线工具(例如 http://smstools3.kekekasvi.com/topic.php?id=288).在“八位字节”列中, 以黄色突出显示的部分表示未用于 并将留在下一个七月九宫内 列中,以黄色突出显示的部分表示来自之前的各位的位 八位字节

十六进制颜色值 八位字节 九宫格 字符(十六进制)
41 01000001 1000001 A (41)
51 01010001 0100010 " (22)
93 10010011 1001101 M (4D)
D9 11011001 1001100 L (4C)
8B 10001011 0111101 = (3D)
ED 11101101 0110001 1 (31)
D8 11011000 0111011 ; (3B)
1101100 l (6C)
F4 11110100 1110100 t (74)
DE 11011110 0111101 = (3D)

这里的最终结果是,之前的一条消息可能会被解码为 以下字符串:

A"ML=1;lt=37.42175;lg=-122.08461;rd=20;top=20150613010948;lc=68;pm=G;si=987654231;ei=358239059042542;mcc=310;mnc=260;ml=123

这些短信应可通过大多数公开可用的短信进行解码 软件开发应用。