受不了夸张的体积,业余时间写了一款原生的 iOS 地震通知 App

116 天前
 JamesZHH

经历过 08 年大地震,加上常居四川,对地震信息比较敏感。

之前一直用某款地震预警 App ,最近发现安装包体积已经 500 MB 了,于是抽业余时间写了一个原生 App 来查看地震信息和接收通知。

第一次写 iOS App ,一开始只打算自用。但后面也想走一下 App Store 发布流程,就上架了。

核心功能

  1. 全球主流数据源,包含:美国地质调查局( USGS )、欧洲地中海地震中心( EMSC )、中国地震台网中心( CEIC )、日本气象厅( JMA )、台湾中央气象局( CWB )等;
  2. 地震数据可视化,不同的地图样式,并提供地震详情;
  3. 地震数据洞察,了解一段时间的震情数据;
  4. 服务器端的地震通知,可以实现全球地震通知,无需打开 app ;
  5. SwiftUI 原生应用,无广告,无隐私忧虑。上手简单,易于使用;
  6. 针对 iPad 和 macOS 大屏幕适配;

预览

地震消息并不是每个人都需要或者习惯性关注,所以应用设为了一次性付费,国区是 18 元。

用户规模可控,消息的触达及时性就会比较好。

由于我自己也是用户,所以会持续维护,这样付费用户也会有更好的体验。接下来主要的方向:

  1. 接入 Critical Alerts ,权限 Apple 还在审核;
  2. 在细节,稳定性,及时性上继续优化;
  3. 接入更多数据源,在数据方面继续深挖;

如果你对地震信息感兴趣,可以 试试 QuakeSense 震感,也欢迎提出建议。

顺便用 Tailwind CSS 写了一个网站: https://quakesense.app/

再次感叹 Tailwind CSS 真好用。

4167 次点击
所在节点    分享创造
39 条回复
zheng5200
116 天前
想问下这个警报,我们是怎么来保证实时性的
DiaoWang
116 天前
持续关注下
huangzhiyia
116 天前
买了看看。 如果成都周边发生地震 地震网发布消息后到传播到成都用户的消息 最快是多少秒?最慢是多少秒。

服务器是轮询地震网的 API 吗?如果是周期是多久?


时间很关键 希望实际地震发送 1s 内就能收到消息
JamesZHH
116 天前
@zmaplex 感谢支持。但是 1s 不太可能,没有任何 app 能做到。除非能预测地震,但是地震是不能预测的。😂 过去的几周测试期间,大概在台网发布后的 1 ~ 2 分钟会收到推送。

关于地震预警,目前最为可行的地震预警方案,是利用电波比地震波快的原理。即当地震发生后,因为震中距离用户有一定距离,地震波传播速度比电波(光速)慢,可以利用这个时间差,提前到通知用户。

所以,你可能在之前看过一些新闻,电视或者小区广播会进行倒计时播报,说「地震波预计 XX 秒后到达」。

那么,QuakeSense 为什么不能提供地震预警功能呢?

先说结论:我无法做到足够低的延迟,提供有效的、能够真正起到预警作用的地震预警通知。

准确有效的地震预警,需要各环节的延迟都足够低,才能在地震波到达用户之前,提供有效的预警通知。但是很多环节都存在延迟:

1. 地震测定基站不太可能刚好位于震源上方,所以收到地震波信号,存在延迟;
2. 测定基站收到信号后,需要计算震源位置,传输到数据中心,存在延迟;
3. 测定数据源发布数据,存在延迟;
4. App 获取数据,根据用户位置信息,计算与震源的距离,存在延迟;
5. 不同地区的地质构造,导致地震波在地层中的传播速度不同,需要独立计算,存在延迟;
6. 处理消息队列,通过 APNs 推送服务向大规模用户推送消息,存在延迟。

所有这些延迟加起来,可能已经远超地震波传播的时间,导致有效的地震预警几乎不可能在 app 端实现。而电视或者专门的预警广播,由于其专用的传输网络,可以更快地传递信息。

但事实上,想做到通过预警逃离地震是几乎不可能的。如果震级大,距离近,可能基站刚测定完,P 波已经到跟前了。如果震级小,距离远,能提前收到预警,但是这种预警大多也无效,因为根本不需要跑。😂

所以,QuakeSense 不能帮助你提前预知地震,或者逃离地震。但它可以帮助你了解地震信息,及时获取最新的地震通知,关心你的家人和朋友,保持警惕,做好应对准备。
aonco33
116 天前
ios 16 也适配下。
regent
116 天前
可以还增加适配 iOS 16 吗?
huangzhiyia
116 天前
@JamesZHH 我指的是台网发布后的 1s 内,实在有难度就 10s 内,一两分钟实在有点慢。
DIMOJANG
116 天前
@zmaplex #7 感觉这种实时性要求这么高的场景还得靠 0 级短信
glcolof
116 天前
做得挺好的,但是这个 App 可能有法律风险,在包括中国在内的很多国家,只有政府相关部门或者政府授权的机构与单位,可以发布地震和其它自然灾害的预警。
huangtao728
116 天前
个人做地震预警主要难点还是在可靠的 “预警级” API 上,如果只是震后提示那就不是很有价值了。

之前做过一个简单的预警是逆向的某省地震台网拿到他的 MQTT 接口,最终实现的效果是提前 30s 左右预警,服务器计算震源距离、转发 Telegram 等额外步骤引入的延迟在 1s 以内,30s 主要是抓到的接口本身预警能力有限。

所以综上,建议楼主可以寻找一些具备预警能力的 API ,据我了解国内鲜有公开的、预警级的 API 可用,可能需要和例如成都高新所等机构直接联系,日本有这类 API 服务,例如 JQuake 正在用的 DM-D.S.S. ( https://dmdata.jp/)。
hackpro
116 天前
iOS 15 也适配下
iseki
116 天前
成都高新好像是自己建的观察站吧,他们会把数据开放出来吗😩国内都把这东西当宝贝
JamesZHH
116 天前
@glcolof 是的,数据都来自官方源,公开或者付费 API 。地震这种咱也不能自己去建个基站测定,更别说自己测完发布了。😂
JamesZHH
116 天前
@huangtao728 是的,感谢建议。延迟主要是从数据源拿到数据 + 计算用户距离 + apns 推送的延迟。app 这个和单独建一个 bot 推送消息不一样,后者只需要拿到数据发布即可,app 这个会多一些步骤。
JamesZHH
116 天前
@iseki 高新本质上是一家公司,没有使用高新的数据,也不会去逆向他的 API 风险太高。
JamesZHH
116 天前
@regent 等我抽空编译一下,Xcode 默认工程就是从 iOS 17 起,考虑到 iOS 18 马上发布,为了便于后期维护,所以没有适配 iOS 16 。但是如果编译报错不多,可以适配一下。😂
brcefy
116 天前
看起来不错,期待安卓版本
brcefy
116 天前
不过正如楼上所说,地震预警从来不是技术问题,而是不愿意用小区广播和 0 级短信导致的,各地各自为政搞了 n 多个小程序。。。
Rrrrrr
116 天前
长这么大没遇过,真的无法检测到的时候,有什么都没用了
bao3
116 天前
地震报警如果是以分钟计,基本是没有意义的。最大的意义也只是告诉朋友,我比你先知道哪里有地震。所以问题在国家,没有设置 0 级报警。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1069274

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX