Has anyone else been able to retrieve weather data from MinuteWeather? Specifically, I'm looking to access summary, but MinuteWeather always returns nil and the WeatherAvailability check for it returns unsupported. I know it's not location based since I'm testing with the same locations I've used previously with the Dark Sky API (where minutely was available).
Example call:
let latitude = 37.323
let longitude = 122.032
Task {
let weatherData = WeatherData.shared
let minutely = await weatherData.minutelyForecast(for: CLLocation(latitude: latitude, longitude: longitude))
guard let minutelyWeather = minutely else {
print("WeatherKit minutely data unavailable")
return
}
// ...
}
WeatherData class:
class WeatherData: NSObject {
static let shared = WeatherData()
private let service = WeatherService.shared
func minutelyForecast(for location: CLLocation) async -> WeatherKit.Forecast<MinuteWeather>? {
let minuteWeather = await Task.detached(priority: .userInitiated) {
let forecast = try? await self.service.weather(for: location, including: .minute)
return forecast
}.value
return minuteWeather
}
}
Post
Replies
Boosts
Views
Activity
I've been unable to get MinuteWeather to return anything for the summary property -- it used to return a nil value which was fixed in a previous beta, but now it always returns an empty string. The rest of the MinuteWeather data returns as expected.
Example call:
let latitude = 37.323
let longitude = -122.032
Task {
let weatherData = WeatherData.shared
let minutely = await weatherData.minutelyForecast(for: CLLocation(latitude: latitude, longitude: longitude))
guard let minutelyWeather = minutely else {
print("WeatherKit minutely data unavailable")
return
}
print(minutelyWeather.summary) // This returns ""
}
WeatherData class:
class WeatherData: NSObject {
static let shared = WeatherData()
private let service = WeatherService.shared
func minutelyForecast(for location: CLLocation) async -> WeatherKit.Forecast<MinuteWeather>? {
let minuteWeather = await Task.detached(priority: .userInitiated) {
let forecast = try? await self.service.weather(for: location, including: .minute)
return forecast
}.value
return minuteWeather
}
}