
2015 年,还在上大学的我买了一部 iPhone 5c。对,就是那款非常漂亮的聚碳酸酯外壳手机。
同年,我在网上看到了少数派,并向其投递了一篇关于 VSCO App 的 体验文章。正是那篇如今看来非常青涩的短文,让我开始不断地体验各式各样的 iOS 应用,并且写下了一篇又一篇的 App 体验文章。
我不曾想过,十年后的今天,我会自己编写一款 iOS App,并且发布到 App Store 上。
这是我的第 187 篇 App 体验文章,也可能是我最特别的一篇文章,将这款由我自己业余时间开发的 App 分享给你。
我日常会关注地震消息,作为 2008 年大地震的亲历者,我对地震有着特殊的敏感度。虽然不是每一次地震都会影响到我,但我还是会习惯性看看最近哪里发生了地震。
我之前一直在用某款「地震预警」App,直到有一天我发现它的更新包已经超过 500 MB。我实在无法理解一款查看地震信息的 App 为什么会有如此庞大的体积,于是就开玩笑地在社交媒体上说,我打算自己写一个地震信息 App。

但是我完全不懂 iOS 开发,没有学过 Objective-C,也没有学过 Swift。我只是学过一点点 Python,了解一些基本的开发概念。
然而,自从 ChatGPT 问世之后,AI 的能力让大家印象深刻。尤其是前段时间推出的 Claude 3.5 Sonnet 模型,得到了很多人的好评。
虽然 AI 没办法从零写出一个完整的 iOS App,但我认为它能帮我解决很多问题。于是,我真的开始了这个项目。
开始行动,不意味着我就可以开始编写代码。我需要先解决一些基本问题:
当然,除了这些问题,我还需要解决很多其他问题。但是,这些关键问题是我真正开始开发之前必须要了解或想清楚的。
于是,我通过询问 AI + 查询资料的方式,大致得出了一些结论:
One Month Later...
我的 App 终于完成了,我将它命名为 QuakeSense(震感)。这是一款简单的 iOS App,它可以帮助你查看全球的地震信息,包括多个数据源,同时支持地震通知推送。
QuakeSense 的界面非常简洁,它包含 4 个页面:主界面,地震详情页面,数据洞察页面和设置页面。iOS 端的安装包体积也做到了 1 MB 以下,非常轻量。
主页面使用了类似 Apple Maps 的抽屉样式,呈现地震信息列表。你可以在这里看到最新的地震信息,包括地震的分级,位置,震级,时间等关键信息。

你可以通过切换选项进行排序,按时间最近或者距离你位置最近来查看。
同时,上方使用了 iOS 原生地图来展示地震的位置,以及列表中所有地震的分布。
除了直接展示里氏震级之外,更醒目的标题留给了地震分级。这里采用了中国地质科学院地质研究所的 地震分级标准,将地震分为:
相比于里氏地震的数字,这种分级更加直观,更容易让用户理解和第一时间了解地震的危险程度。
你可以通过点击地图上的标记,列表中的地震条目来打开地震详情页面。

详情页面同样采用了抽屉样式,这里会展示更加详细的地震信息,包括地震的深度,震中经纬度坐标,震级,烈度,距离,测定机构等详细信息。
数据洞察页面展示了地震数据的统计信息,包括全球最近 24 小时和 7 天的地震数量,最大震级,平均震级等信息。

同时,这里还会展示距离你所在位置的震距分布图,震级分布图等。
你可以通过右上角的筛选项,来切换不同测定机构的数据,单独查看某个机构的数据洞察结果。
我希望做一款普通人易用的 App,无论是主界面还是设置页面,我都尽量保持简洁,减少用户不必要的操作,关注真正值得关注的信息。
在设置页面,你可以选择默认的排序方式,默认的数据源,以及默认关注的最小震级。

目前,QuakeSense 支持美国地质调查局(USGS)、欧洲地中海地震中心(EMSC)、中国地震台网中心(CEIC)、日本气象厅(JMA)、台湾中央气象局(CWB)等多个数据源,你可以根据自己所在地区,选择合适的数据源。
理论上,你所在地区的测定机构往往可以更加及时和准确地提供地震信息,因为他们安装的测定站密度更大且距离更近。如果你所在地区有更准确的地震数据源,欢迎反馈给我,我会尽量支持添加。
同时,你可以在设置里面开启地震通知推送。当你所在位置,500 Km 以内发生有感地震,或者全球发生 7 级以上的大地震时,你会收到来自 QuakeSense 的推送通知。
推送通知基于服务端消息队列,确保你可以在不打开 App 的情况下,第一时间了解到地震信息。
在测试期间,有用户问我为什么不做地震预警功能,因为很多 App 都有所谓「预警」的功能。我愿意分享一下我自己对地震预警和地震通知的理解。
首先,这里提到一个基本常识:地震是无法被有效预测的。 也就是说,没有人能够准确预测地震是否会发生,更不要说地震发生的时间、地点和震级。
目前最为可行的地震预警方案,是利用电波比地震波快的原理。即当地震发生后,因为震中距离用户有一定距离,地震波传播速度比电波(光速)慢,可以利用这个时间差,提前到通知用户。
所以,你可能在之前看过一些新闻,电视或者小区广播会进行倒计时播报,说「地震波预计 XX 秒后到达」。
那么,QuakeSense 为什么没有地震预警功能呢?
先说结论:我无法做到足够低的延迟,提供有效的、能够真正起到预警作用的地震预警通知。
准确有效的地震预警,需要各环节的延迟都足够低,才能在地震波到达用户之前,提供有效的预警通知。但是很多环节都存在延迟:
所有这些延迟加起来,可能已经远超地震波传播的时间,导致有效的地震预警几乎不可能在 app 端实现。而电视或者专门的预警广播,由于其专用的传输网络,可以更快地传递信息。
小震不用跑,大震跑不了。这是四川人民经常调侃的一句话,但也是地震预警面对的现实。
所以,QuakeSense 不能帮助你提前预知地震,或者逃离地震。但它可以帮助你了解地震信息,及时获取最新的地震通知,关心你的家人和朋友,保持警惕,做好应对准备。
我为 QuakeSense 上线了一个 网站,包含常见问题和 隐私政策。我个人非常重视隐私保护,虽然现实往往非常残酷,但我仍然希望自己的应用能够尽可能保护用户的隐私。

QuakeSense 只会收集你的两项信息:你的大致位置信息和设备 ID。
这些数据被加密存放在 Cloudflare 的 D1 数据库中,当用户关闭通知功能或者删除 App 导致通知不可达时,这些数据会被自动触发删除。
得益于 SwiftUI 的跨平台特性,QuakeSense 也可以在 macOS 和 iPadOS 上运行。我为大屏设备重新设计了界面布局,使得用户在大屏设备上也能够更好地使用 QuakeSense。

目前,QuakeSense 以及适配了中文简体、中文繁体、英文和日文,为不同数据源的主要用户提供了更好的体验。
QuakeSense 是我开发的第一款 iOS App,是否收费的确思考了很久。最终,我决定将它设置为一次性收费应用,不包含任何内购和订阅。
QuakeSense 的中国区定价为免费下载 + 2.99 美元/年 Pro。
Pro 版本拥有消息通知、更完整的历史数据和数据洞察功能。
以下是我设为付费应用的原因:
QuakeSense 诞生于一念之间,我没有想到我会写一款 iOS App,也没有想到我会在少数派上分享这篇文章。我只是想做一款自己用得上的 App,也许你也会用得上。
你可以前往 App Store 免费下载 QuakeSense,或者访问 QuakeSense 网页 了解更多信息。

2015 年,还在上大学的我买了一部 iPhone 5c。对,就是那款非常漂亮的聚碳酸酯外壳手机。
同年,我在网上看到了少数派,并向其投递了一篇关于 VSCO App 的 体验文章。正是那篇如今看来非常青涩的短文,让我开始不断地体验各式各样的 iOS 应用,并且写下了一篇又一篇的 App 体验文章。
我不曾想过,十年后的今天,我会自己编写一款 iOS App,并且发布到 App Store 上。
这是我的第 187 篇 App 体验文章,也可能是我最特别的一篇文章,将这款由我自己业余时间开发的 App 分享给你。
我日常会关注地震消息,作为 2008 年大地震的亲历者,我对地震有着特殊的敏感度。虽然不是每一次地震都会影响到我,但我还是会习惯性看看最近哪里发生了地震。
我之前一直在用某款「地震预警」App,直到有一天我发现它的更新包已经超过 500 MB。我实在无法理解一款查看地震信息的 App 为什么会有如此庞大的体积,于是就开玩笑地在社交媒体上说,我打算自己写一个地震信息 App。

但是我完全不懂 iOS 开发,没有学过 Objective-C,也没有学过 Swift。我只是学过一点点 Python,了解一些基本的开发概念。
然而,自从 ChatGPT 问世之后,AI 的能力让大家印象深刻。尤其是前段时间推出的 Claude 3.5 Sonnet 模型,得到了很多人的好评。
虽然 AI 没办法从零写出一个完整的 iOS App,但我认为它能帮我解决很多问题。于是,我真的开始了这个项目。
开始行动,不意味着我就可以开始编写代码。我需要先解决一些基本问题:
当然,除了这些问题,我还需要解决很多其他问题。但是,这些关键问题是我真正开始开发之前必须要了解或想清楚的。
于是,我通过询问 AI + 查询资料的方式,大致得出了一些结论:
One Month Later...
我的 App 终于完成了,我将它命名为 QuakeSense(震感)。这是一款简单的 iOS App,它可以帮助你查看全球的地震信息,包括多个数据源,同时支持地震通知推送。
QuakeSense 的界面非常简洁,它包含 4 个页面:主界面,地震详情页面,数据洞察页面和设置页面。iOS 端的安装包体积也做到了 1 MB 以下,非常轻量。
主页面使用了类似 Apple Maps 的抽屉样式,呈现地震信息列表。你可以在这里看到最新的地震信息,包括地震的分级,位置,震级,时间等关键信息。

你可以通过切换选项进行排序,按时间最近或者距离你位置最近来查看。
同时,上方使用了 iOS 原生地图来展示地震的位置,以及列表中所有地震的分布。
除了直接展示里氏震级之外,更醒目的标题留给了地震分级。这里采用了中国地质科学院地质研究所的 地震分级标准,将地震分为:
相比于里氏地震的数字,这种分级更加直观,更容易让用户理解和第一时间了解地震的危险程度。
你可以通过点击地图上的标记,列表中的地震条目来打开地震详情页面。

详情页面同样采用了抽屉样式,这里会展示更加详细的地震信息,包括地震的深度,震中经纬度坐标,震级,烈度,距离,测定机构等详细信息。
数据洞察页面展示了地震数据的统计信息,包括全球最近 24 小时和 7 天的地震数量,最大震级,平均震级等信息。

同时,这里还会展示距离你所在位置的震距分布图,震级分布图等。
你可以通过右上角的筛选项,来切换不同测定机构的数据,单独查看某个机构的数据洞察结果。
我希望做一款普通人易用的 App,无论是主界面还是设置页面,我都尽量保持简洁,减少用户不必要的操作,关注真正值得关注的信息。
在设置页面,你可以选择默认的排序方式,默认的数据源,以及默认关注的最小震级。

目前,QuakeSense 支持美国地质调查局(USGS)、欧洲地中海地震中心(EMSC)、中国地震台网中心(CEIC)、日本气象厅(JMA)、台湾中央气象局(CWB)等多个数据源,你可以根据自己所在地区,选择合适的数据源。
理论上,你所在地区的测定机构往往可以更加及时和准确地提供地震信息,因为他们安装的测定站密度更大且距离更近。如果你所在地区有更准确的地震数据源,欢迎反馈给我,我会尽量支持添加。
同时,你可以在设置里面开启地震通知推送。当你所在位置,500 Km 以内发生有感地震,或者全球发生 7 级以上的大地震时,你会收到来自 QuakeSense 的推送通知。
推送通知基于服务端消息队列,确保你可以在不打开 App 的情况下,第一时间了解到地震信息。
在测试期间,有用户问我为什么不做地震预警功能,因为很多 App 都有所谓「预警」的功能。我愿意分享一下我自己对地震预警和地震通知的理解。
首先,这里提到一个基本常识:地震是无法被有效预测的。 也就是说,没有人能够准确预测地震是否会发生,更不要说地震发生的时间、地点和震级。
目前最为可行的地震预警方案,是利用电波比地震波快的原理。即当地震发生后,因为震中距离用户有一定距离,地震波传播速度比电波(光速)慢,可以利用这个时间差,提前到通知用户。
所以,你可能在之前看过一些新闻,电视或者小区广播会进行倒计时播报,说「地震波预计 XX 秒后到达」。
那么,QuakeSense 为什么没有地震预警功能呢?
先说结论:我无法做到足够低的延迟,提供有效的、能够真正起到预警作用的地震预警通知。
准确有效的地震预警,需要各环节的延迟都足够低,才能在地震波到达用户之前,提供有效的预警通知。但是很多环节都存在延迟:
所有这些延迟加起来,可能已经远超地震波传播的时间,导致有效的地震预警几乎不可能在 app 端实现。而电视或者专门的预警广播,由于其专用的传输网络,可以更快地传递信息。
小震不用跑,大震跑不了。这是四川人民经常调侃的一句话,但也是地震预警面对的现实。
所以,QuakeSense 不能帮助你提前预知地震,或者逃离地震。但它可以帮助你了解地震信息,及时获取最新的地震通知,关心你的家人和朋友,保持警惕,做好应对准备。
我为 QuakeSense 上线了一个 网站,包含常见问题和 隐私政策。我个人非常重视隐私保护,虽然现实往往非常残酷,但我仍然希望自己的应用能够尽可能保护用户的隐私。

QuakeSense 只会收集你的两项信息:你的大致位置信息和设备 ID。
这些数据被加密存放在 Cloudflare 的 D1 数据库中,当用户关闭通知功能或者删除 App 导致通知不可达时,这些数据会被自动触发删除。
得益于 SwiftUI 的跨平台特性,QuakeSense 也可以在 macOS 和 iPadOS 上运行。我为大屏设备重新设计了界面布局,使得用户在大屏设备上也能够更好地使用 QuakeSense。

目前,QuakeSense 以及适配了中文简体、中文繁体、英文和日文,为不同数据源的主要用户提供了更好的体验。
QuakeSense 是我开发的第一款 iOS App,是否收费的确思考了很久。最终,我决定将它设置为一次性收费应用,不包含任何内购和订阅。
QuakeSense 的中国区定价为免费下载 + 2.99 美元/年 Pro。
Pro 版本拥有消息通知、更完整的历史数据和数据洞察功能。
以下是我设为付费应用的原因:
QuakeSense 诞生于一念之间,我没有想到我会写一款 iOS App,也没有想到我会在少数派上分享这篇文章。我只是想做一款自己用得上的 App,也许你也会用得上。
你可以前往 App Store 免费下载 QuakeSense,或者访问 QuakeSense 网页 了解更多信息。