Wireless Emergency Alerts 介绍(CMAS介绍)

碎碎念

去年下半年转到KaiOS项目,因为是新系统加上比较忙,一直没有什么产出,今日补上一篇博客, 不偏技术,偏认知/科普。

前言

首先明确一下标题的含义,Wireless Emergency Alerts 无线紧急警报,它的前身是大家经常听到的 CMAS(Commercial mobile alert system)。但大家可能也没听说过,毕竟这个服务国内没有。。。
先看一个事件:夏威夷误发“导弹预警”
当地时间13日上午8时7分左右,夏威夷部分居民手机收到了政府部门“夏威夷应急管理中心”(Hawaii Emergency Management Agency)推送的一条 “导弹(Ballistic Missile)预警”通知。
所以直观上讲, WEA 可以使民众可以快速收到人身安全收到威胁的警报。
那么WEA 具体的含义,接收条件,警报表现形式又是怎么样的呢?接下来我们一一介绍。

什么是WEA?

WEA 即Wireless Emergency Alerts 的缩写(之前称为Commercial Mobile Alert System (CMAS)
WEA 是一个安全系统,使特定区域用户的手机/其他无线移动设备可以到其安全将收到威胁的警报。
WEA 2008年建立,2012年运行。
WEA 使政府可以对特定区域发送紧急警报。

WEA 信息由谁发布?

经授权的州或本地政府可以使用WEA发出关于公共安全紧急情况的警报,例如由于恶劣天气,恐怖主义威胁或化学品泄漏而发生的疏散令或避难点。
警报由政府官员发送给运营商,之后由运营商推送给用户的移动设备(当然这部分肯定做到了自动化/程序化)。

谁能够接收WEA?

该区域所有具有WEA接收功能的移动设备都能免费接收到警报,即使设备是漫游到此地。

WEA 发送哪些警报?

WEA警报只涉及关键紧急情况。用户可能只会收到三种类型警报(摘自FCC):
  1. 总统发出的警报
  2. 涉及迫在眉睫的安全或生命威胁的警报
  3. 安帕警报(安泊警报)
运营商或许会允许用户阻止除总统警报以外的警报。也就是说总统发出的警报强制接收。
PS:这里其实有一点“争议”。略

用户接收到WEA 会观察到什么?

WEA 警报以类似于文字消息的形式显示,内容包含的url,email 和phoneNumber 应当被高亮并可执行访问或拨打的操作。
警报伴有独特的声音信号和震动频率,这对听力或视力有障碍的残疾人尤其有帮助。
补充:
根据世界无线通讯解决方案联盟 (ATIS)与美国通信工业协会 (TIA)制定的 J-STD-100, 移动设备运行技术规范《JOINT ATIS/TIA CMASMOBILE DEVICE BEHAVIOR SPECIFICATION》中的规定。震动和警报音应满足下面的要求
震动的间隔也是这样的,就不贴图了。
两种模式的时间模式不需要同步,具体的要求可以查看协议要求。
上面介绍了一些用户层面上可体验到的东西,下面我们从代码/程序层面在介绍一下。

WEA 服务初始化(手机端)

WEA 基于小区广播服务。所以它的初始化基本上等同与CellBroadcast的初始化,它独有的地方在于要配置WEA 相关的mids(Message ID)或者说Channel ID 到modem。
而Modem端的mids来源于代码,SIM卡,NV值等
1. 代码中根据类型设置是否默认开启(预置);
2. SIM 卡某一位置写了CBMI(Cell Broadcast Message ID)或者CBMIR(Cell Broadcast Message ID Range);
比较好的方法是修改代码调整预置的mids。
流程图略

Alerts 分类(根据mids)

综合查到的信息做一个整理
WEA Message ClassMessage ID(English)Message ID(Spanish)PWS TypeDescription
Presidential Alert43704383CMAS/CBSPresidential Level Alerts
Extreme Threat43714384CMAS/CBSExtreme Alerts with Severity of Extreme, Urgency of Immediate and Certainty of Observed
43724385CMAS/CBSExtreme Alerts with Severity of Extreme, Urgency of Immediate and Certainty of Likely
Severe Threat43734386CMAS/CBSSevere Alerts with Severity of Extreme, Urgency of Immediate and Certainty of Observed
43744387CMAS/CBSSevere Alerts with Severity of Extreme, Urgency of Immediate and Certainty of Likely
43754388CMAS/CBSSevere Alerts with Severity of Severe, Urgency of Immediate and Certainty of Observed
43764389CMAS/CBSSevere Alerts with Severity of Severe, Urgency of Immediate and Certainty of Likely
43774390CMAS/CBSSevere Alerts with Severity of Severe, Urgency of Expected and Certainty of Observed
43784391CMAS/CBSSevere Alerts with Severity of Severe, Urgency of Expected and Certainty of Likely
AMBER Alert43794392CMAS/CBSChild Abduction Emergency (or Amber Alert)
RMT Alert43804393CMAS/CBSRequired Monthly Test
Exercise Alert43814394CMAS/CBSCMAS Exercise
Operator Alert/CMSP43824395CMAS/CBSOperator defined use
其中English 的Presidential Alert 默认开启且不允许关闭,Extreme Threat, Severe Threat, AMBER Alert默认开启,最后下面3类作为测试用默认关闭。

AT命令设置/查看支持的mids

测试命令 AT+CSCB=?

返回:
+CSCB:(list of supported <mode>s)
参数:
<mode> 0 接收消息 1 不接收消息 也就是启用和禁用小区广播功能

读取命令 AT+CSCB?

这个命令用于快速查看当前支持的mids。如果某个mids 对应的消息收不到,可以快速查看当前是不是不接收此mids 对应的广播消息。
返回:
+CSCB: <mode>,<mids>,<dcss>
参数:
<mode> 0 接收消息 1 不接收消息
<mids> 文本类型,是CMB message ids 的组合
<dcss> 文本类型,是CMB message ids 支持的语言,为空的话表示接收所有语言编码的消息
比如:
+CSCB: 0, "4352-4355, 4370,4371-4373,4373-4379, 4383,...",""

写入命令 AT+CSCB=[< mode>[,<mids>[,dcss]]]

用这个命令设置新的mids方便临时测试。
例如:AT+CSCB=0,”15-17,50,86”,” ”

WEA 消息接收流程

前面我们提到了WEA 是基于小区广播服务的,那它的接收也是和小区广播一样的。
流程图略,说明略。

重复消息检测机制

根据3GPP 协议,应当对收到的消息进行重复消息检测(即使先收到的消息已被删除)
  1. 如果messageId 和 serialNumber 相同则为重复消息
  2. 消息内容是否一致(可选,ckt在7050上实现)
通常是对24小时内收到的消息判断,日本为1小时。
前面括号里写了,即使之前收到的消息已经被删除,也应作为和新消息比较的数据源。那么可能就要求开发者在接收到消息后在不同位置存储两份,一份用来显示,一份用来做重复消息检测(KaiOS是这么做的)。当然,方案不唯一,你用个tag标记也是可以的。新增,重复消息检测可以在modem 层实现,也可以在应用层实现。

省略部分内容。

参考链接

1. Wireless Emergency Alerts(wikipedia)

2. Wireless Emergency Alerts (WEA)(FCC 美国联邦通讯委员会)

3. Commercial Mobile Telephone Alerts (CMAS)

读者可能注意到我略去了一部分内容,因为涉及到的东西并不全都是开源的,我觉得还是谨慎一点好。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
关于 `alerts` 弹窗的常见使用方法有以下几种: 1. `alert()` 方法:该方法用于在页面中弹出警告消息框,通常用于向用户显示错误信息或重要提示。该方法只有一个参数,即要显示的文本内容,语法如下: ```javascript alert("这是一条警告信息!"); ``` 2. `confirm()` 方法:该方法用于在页面中弹出确认消息框,通常用于询问用户是否执行某个操作。该方法有两个参数,第一个参数是要显示的文本内容,第二个参数是一个回调函数,用于处理用户点击确定或取消按钮后的操作,语法如下: ```javascript confirm("确定要删除吗?", function(result) { if (result) { // 用户点击了确定按钮 // 执行删除操作 } else { // 用户点击了取消按钮 // 取消删除操作 } }); ``` 3. `prompt()` 方法:该方法用于在页面中弹出输入框,通常用于获取用户输入的数据。该方法有两个参数,第一个参数是要显示的文本内容,第二个参数是一个回调函数,用于处理用户点击确定或取消按钮后的操作,并且该函数会返回用户输入的数据,语法如下: ```javascript prompt("请输入您的姓名:", function(name) { if (name) { // 用户输入了姓名 // 显示欢迎信息 alert("欢迎您," + name + "!"); } else { // 用户取消了输入 // 不做任何操作 } }); ``` 以上三种方法都是通过调用浏览器提供的原生方法来实现弹窗功能,可以根据具体使用场景选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值