WWDC22: WeatherKit 初探
发布
更新
字数
605
阅读
4 分钟
阅读量
1634
WeatherKit 提供了全面的全球天气数据,可以很方便地在应用或其他服务中使用。WeatherKIt 提供了原生 Swift API 和 REST API 两种访问方式。可以获取当前和10天内的分时天气预报情况,包含温度、预计降水量、风速、UV 指数等等,以及更多的详细信息。
WeatherKit / Current weather / Minute forecast / Hourly forecast /
Daily forecast / Weather alerts / Historical weather / UV index /
Humidity / Pressure / Moonset Precipitation chance / Cloud cover /
Visibility / Condition temperature / Wind gust / Sunrise / Pressure
trend / Wind speed / Moonrise / Weather severity / Precipitation
intensity / Precipitation amount / High temperature / Wind direction /
Low temperature / Dew point / Apparent temperature / Moon shape /
Sunset / Snowfall amount
WeatherKit 文档:https://developer.apple.com/documentation/WeatherKit
Weather data
- Currrent weather
- Apparent temperature
- Cloud cover
- Condition
- Dew point
- Humidity
- Pressure
- Pressure trend
- Temperature
- UV index
- Visibility
- Wind direction
- Wind gust
- Wind speed
- Minute forecast,包含一小时内的降雨情况
- Precipitation chance
- Precipitation intensity
- Hourly forecast,包含未来 240 小时内的数据,数据结构同
current weather
- Daily forecast,包含未来 10 天内的数据
- High temperature
- Low temperature
- Moon phase
- Moonset
- Precipitaion amount
- Snowfall amount
- Sunrise
- Sunset
- Wind direction
- Weather alerts
- Region
- Severity
- Source
- Summary
- Historical weather,daily or hourly
- Apparent temperature
- Cloud cover
- Condition
- Dew point
- High temperature
- Humidity
- Low temperature
- Moon phase
- Moonrise
- Moonset
- Precipitation amount
- Precipitation chance
- Precipitation intensity
- Pressure
- Pressure trend
- Snowfall amount
- Sunrise
- Sunset
- Temperature
- UV index
- Visibility
- Wind direction
- Wind gust
- Wind speed
WeatherKit
通过 swift WeatherKit 框架使用 Apple Weather Service 非常方便,只需要为 weather service 提供一个地理位置即可。得力于 swift 异步编程的能力,整个过程非常的直观。
// Request the weather
// 1. 导入
import WeatherKit
import CoreLocation
// 2. 创建 weather service 实例
let weatherService = WeatherService()
// 3. 获取天气的地理信息
let syracuse = CLLocation(latitude: 43, longitude: -76)
// 4. 使用异步 API 获取天气数据
let weather = try! await weatherService.weather(for: syracuse)
// 5. 访问信息
let temperature = weather.currentWeather.temperature
let uvIndex = weather.currentWeather.uvIndex
要使用 WeatherKit,需要为 App Identifier 开启 WeatherKit capability,然后就可以使用 weather(for:, including:)
获取天气数据了。
WeatherKit REST API
Swift 代码示例
/* Request a token */
// 需要在 Developer Portal 创建 private key
// 然后创建 JWT token
const tokenResponse = await fetch('https://example.com/token');
const token = await tokenResponse.text();
/* Get my weather object */
const url = "https://weatherkit.apple.com/1/weather/en-US/41.029/-74.642?dataSets=weatherAlerts&country=US"
const weatherResponse = await fetch(url, {
headers: {
"Authorization": token
}
});
const weather = await weatherResponse.json();
/* Check for active weather alerts */
const alerts = weather.weatherAlerts;
const detailsUrl = weather.weatherAlerts.detailsUrl;
注意版权
使用 Apple Weather Service WeatherKit
需要显示 Weather 徽标和版权链接。