Connect with us

Разработка

Начинаем работу с WeatherKit

Большая часть сложностей с запуском WeatherKit заключается в обеспечении необходимого сопутствующего функционала.

Опубликовано

/

     
     

Большая часть сложностей с запуском WeatherKit заключается в обеспечении необходимого сопутствующего функционала.

Создайте новый App ID на сайте Apple для разработчиков.

Вам нужно будет включить WeatherKit на ОБЕИХ вкладках, называемых Capabilities и App Services. Ваш идентификатор пакета должен быть явным, и вам нужно будет подождать не менее 30 минут после создания идентификатора приложения, прежде чем пытаться использовать WeatherKit.

Начинаем работу с WeatherKit

Теперь создайте новый проект приложения в Xcode 14, обязательно добавив возможность WeatherKit на вкладке Signing and Capabilities вашего проекта, как показано ниже.

Начинаем работу с WeatherKit

Надеюсь, вы создали свой идентификатор приложения с нужными возможностями и службами и подождали полчаса, затем создали проект приложения с тем же идентификатором пакета, что и ваш App ID, и, наконец, добавили эту возможность в свой проект.

Теперь мы можем перейти к самой интересной части — созданию интерфейса на SwiftUI, отображающего данные о погоде.

Для простоты я делаю приложение, которое отображает только температуру в Купертино в данное время:

Широта и долгота Куптертино были рассчитаны с помощью latlong.net и сохранены как статический объект CLLocation. Для того, чтобы температура на экране была большой, был выбран огромный размер шрифта с минимальным коэффициентом масштабирования. Так мы получаем доступ к функции автоматического сжатия auto-shrink, известной по UIKit. Ограничение строки используется для того, чтобы единицы измерения не переносились на вторую строку, что произойдет, если строка станет слишком длинной.

Когда объект weather равен nil, появляется счетчик в форме ProgressView, а модификатор .task используется для получения данных о погоде при первом появлении счетчика. И этот ProgressView, и Text, отображающий температуру, находятся внутри Group, поэтому они оба могут иметь один и тот же заголовок навигации. Это отображается в верхней части экрана, сообщая нам местоположение для отображаемой температуры.

У WeatherService есть shared синглтон, и именно так мы получаем доступ к WeatherKit API. Нет необходимости добавлять какую-либо аутентификацию, так как это делается с помощью идентификатора приложения. Передача WeatherService местоположения дает нам объект с кучей полезных данных, но нас сейчас интересует только текущая погода.

Текущая погода имеет такую ​​структуру JSON:

Если вы не подождали полчаса после создания App ID, вы можете получить fatalError, в котором говорится, что вы получили недопустимый ответ JWT с кодом ошибки 401. Если вы все еще получаете эту ошибку через полчаса ожидания, возможно, ваш идентификатор приложения был настроен неправильно (или серверы Apple просто медленные).

Я также столкнулся с ошибками, в которых говорилось об отсутствии частей в объекте погоды.

Вы сможете предотвратить сбой приложения, изменив fatalError просто на печать ошибок, поскольку они не обязательно являются фатальными ошибками.

Вот и все на данный момент!

Источник

WeatherKit на сайте Apple

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: