通知中心的每日天气预报通知使用的是和风天气的 API,但从 2022 年 11 月开始,和风的免费额度大幅下降,从原来每天 5 万次请求下降至 1000 次,而且 2023/04/13 这一天通知中心发起的大部份请求都响应超时,这不得不让我考虑放弃使用和风 API。
简单调查了一下目前可用的部分免费天气 API:
如果不想付费,以上天气 API 其实只有高德(或百度)、OpenWeather 可选,其他 API 的调用次数或 QPS 限制太多,不适合通知中心的使用场景。和风突然大幅降低免费额度让我对彩云、心知也缺少安全感。通知中心的天气通知主要是让用户对今天的天气有一个总体的判断,例如今天是晴还是雨,今天是冷还是热,对逐小时的数据需求不大,同时我不确定 OpenWeather 在国内网络的稳定性如何,所以我考虑百度或高德,我导航用高德地图,所以就用高德 API 吧。如果对台湾或海外天气有需求,应该用百度。不确定高德和百度在开发体验上的区别。
高德或百度天气 API 有一个比较大的问题:只能依据 adcode 查询天气,而不是经纬度。有些面积比较大的行政区域共用同一个 adcode,例如整个东莞市都是 441900,没有细分的 adcode,而东莞面积并不小,这意味着东莞的天气预报信息可能不会很准确。再比如若羌县,中国面积最大的县,相当于两个浙江省,整个县的 adcode 都是 652824,高德地图依据 652824 返回的天气信息恐怕无法反映整个若羌县的天气情况。有些面积很小的行政区域,例如澳门,反而细分了多个 adcode,从天气角度来看没有必要。
如果接受付费,和风天气是按量计费,天气 API 30 万次以内 0.001 元/次,如果一个月调用 10 万次(平均一天 3333 次),费用是 100 元,有点贵。心知天气免费套餐就已经是无限调用,但 QPS 只有 1,要想把 QPS 提高到 1 以上,至少需要 599 的套餐,如果不需要实时天气信息,心知的免费套餐就够用,因为数据可以缓存起来,另外免费不支持商用。彩云对个人开发者而言是最贵的,1200 元/月的个人套餐每天有 5 万次调用,QPS 只有 8,不过彩云支持分钟级天气预报,这是一个很好的功能。
相关文章: