Quickstarters
Feature Overview
How to Build a Backend for WatchOS?
41 мин
введение в этом учебном пособии вы узнаете как создать бэкенд для watchos приложений с использованием back4app создаете ли вы расширение watchkit для вашего приложения для iphone или разрабатываете отдельный опыт apple watch , back4app упрощает вашу работу, предоставляя необходимые инструменты вы интегрируете такие функции, как безопасная база данных, функции cloud code, запросы в реальном времени (live queries) и аутентификация пользователей — все это без управления собственными серверами вы также увидите, как быстрая процедура запуска back4app и удобная среда позволяют вам сосредоточиться на функциональности ваших приложений watchos , а не на настройке серверов в процессе вы научитесь выполнять такие задачи, как планирование заданий, настройка вебхуков и конфигурация push уведомлений к концу у вас будет прочная основа для расширения ваших приложений для часов или приложений ios для производственных нужд, при этом обеспечивая бесшовную синхронизацию данных (по интернет соединению ) между приложением watchkit и вашим бэкендом предварительные требования учетная запись back4app и новый проект back4app начало работы с back4app https //www back4app com/docs/get started/new parse app если у вас нет учетной записи, вы можете создать ее бесплатно следуйте приведенному выше руководству, чтобы подготовить ваш проект среда разработки watchos/xcode у вас должна быть установлена xcode с watchos sdk вы можете запускать и собирать ваш watchkit расширение на реальных apple watch или на симуляторе parse swift sdk используйте swift package manager https //github com/netreconlab/parse swift для установки и настройки sdk для вашего watchos или комбинированных ios приложений знание swift, xcode и экосистемы разработки apple документация для разработчиков apple https //developer apple com/documentation/ если вы новичок на платформах apple, потратьте некоторое время на изучение документации по watchos и ios перед началом убедитесь, что вы соответствуете этим предварительным требованиям, прежде чем начинать наличие вашего проекта back4app и готовой локальной среды watchos поможет вам легко следовать инструкциям шаг 1 – создание нового проекта на back4app и подключение почему вам нужен проект back4app новый проект back4app необходим для хранения всех данных и выполнения облачного кода для ваших watchos приложений это служит основой вашего бэкенда создайте ваш проект войдите в back4app нажмите “новое приложение” в панели управления назовите ваше приложение (например, “watchos backend tutorial”) установите parse swift sdk добавьте parse swift зависимость в ваш package swift или используя файл → swift packages → добавить зависимость пакета в xcode укажите url dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] инициализируйте parse в вашем watchos или общем коде в коде запуска вашего приложения watchkit или в общем файле, доступном как для вашего watchos так и для iphone приложения , инициализируйте parse @main struct mywatchapp app { init() { task { do { try await parseswift initialize( applicationid "your app id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } } var body some scene { windowgroup { contentview() } } } на этом этапе ваше watchos приложение может взаимодействовать с бэкендом back4app будь то независимое приложение apple watch или расширение watchkit в паре с iphone приложением , все данные бэкенда проходят через sdk parse swift шаг 2 – настройка базы данных 1\ создание модели данных back4app использует функцию схемы на запись parse server вы можете определить таблицы (классы) в разделе back4app database или позволить им создаваться автоматически, когда объекты впервые сохраняются например, если ваши watch приложения отслеживают данные о здоровье, у вас может быть класс “healthmetrics” с полями, такими как частота сердечных сокращений, шаги или тип тренировки 2\ создание модели данных с использованием ai agent ai agent от back4app ai agent позволяет вам описывать вашу схему на простом языке откройте ai agent в панели управления вашего приложения укажите детали, такие как “пожалуйста, создайте класс watch metrics с полями dailysteps (число), heartrate (число) ” ai автоматически создаст схему для вас 3\ чтение и запись данных с использованием sdk ниже приведен пример сохранения и запроса данных из приложения watchos предположим, у нас есть healthmetrics структура import parseswift struct healthmetrics parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var dailysteps int? var heartrate int? } // saving data func savemetrics(steps int, heart int) async { var metrics = healthmetrics() metrics dailysteps = steps metrics heartrate = heart do { let saved = try await metrics save() print("saved metrics \\(saved)") } catch { print("error saving \\(error)") } } // querying data func fetchlatestmetrics() async { let query = healthmetrics query() do { let results = try await query find() print("fetched \\(results count) items") } catch { print("error fetching \\(error)") } } 4\ чтение и запись данных с использованием rest api при необходимости ваши watchos или ios приложения также могут отправлять rest запросы curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"dailysteps" 8000, "heartrate" 75}' \\ https //parseapi back4app com/classes/healthmetrics 5\ чтение и запись данных с использованием graphql back4app также предоставляет конечную точку graphql например mutation { createhealthmetrics(input { fields { dailysteps 7500 heartrate 70 } }) { healthmetrics { objectid dailysteps heartrate } } } 6\ работа с живыми запросами (по желанию) если вам нужны обновления данных в реальном времени на вашем apple watch , включите живые запросы включите live queries в разделе server settings в back4app настройте url живого запроса в вашем коде watchos parselivequery configure(url url(string "wss\ //your subdomain b4a io")!) затем подпишитесь на изменения func subscribemetricsupdates() async throws { let subscription = healthmetrics query() subscribe() for try await event in subscription { switch event { case created(let newdata) print("new data \\(newdata)") case updated(let updateddata) print("updated \\(updateddata)") default break } } } шаг 3 – применение безопасности с помощью acl и clp 1\ краткий обзор back4app позволяет использовать списки контроля доступа (acl) и разрешения на уровне классов (clp) для защиты вашей базы данных например, вы можете ограничить доступ к определенным метрикам только для пользователя, который их создал, или разрешить доступ только для аутентифицированных аккаунтов 2\ пошаговая настройка разрешения на уровне классов перейдите в база данных → класс → безопасность для определения значений по умолчанию (например, только для чтения для всех, запись для владельцев) acl в коде вы можете добавить acl к каждому объекту в вашем watchkit или общем коде например if let user = user current { var acl = parseacl() acl setreadaccess(user user, value true) acl setwriteaccess(user user, value true) var metrics = healthmetrics() metrics acl = acl } это гарантирует, что только вошедший в систему пользователь может просматривать или изменять объекты healthmetrics, которые они создают шаг 4 – написание функций облачного кода 1\ почему облачный код облачный код помогает вам выполнять сложные или конфиденциальные операции на стороне сервера, такие как валидация данных, вызовы внешних api или ведение журнала эта настройка полезна для минимизации нагрузки на устройства watchos и сохранения заряда батареи на apple watch 2\ пример функции в вашем main js parse cloud define('processmetrics', async (request) => { const { dailysteps, heartrate } = request params; if (!dailysteps || !heartrate) { throw 'missing parameters '; } // example simple calculation return dailysteps heartrate; }); 3\ развертывание используйте back4app cli https //www back4app com/docs/local development/parse cli для развертывания b4a deploy b4a deploy 4\ установка модулей npm если вам нужны внешние библиотеки в вашем cloud code добавьте зависимости в package json (в папке вашего cloud code) используйте require('your lib') в main js шаг 5 – настройка аутентификации 1\ включите аутентификацию пользователей по умолчанию класс user готов в back4app убедитесь, что «включить разрешения на уровне класса» настроено правильно для объектов пользователей 2\ примеры кода в parse swift вы можете зарегистрировать пользователя из вашего кода watchos struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupnewuser(name string, pass string, mail string) async { var newuser = user() newuser username = name newuser password = pass newuser email = mail do { let signedup = try await newuser signup() print("sign up successful \\(signedup)") } catch { print("error signing up \\(error)") } } 3\ социальный вход если вы планируете интегрировать вход через apple, google или facebook в ваше приложение watchos или iphone, вы можете сделать это с помощью соответствующих функций социального входа parse swift см документация back4app https //www back4app com/docs/platform/sign in with apple для получения подробной информации шаг 6 – обработка хранения файлов 1\ настройка хранения файлов если ваши приложения для часов нуждаются в загрузке изображений, журналов или небольших файлов данных, вы можете полагаться на parsefile func uploadfile(data data, filename string) async { let file = parsefile(name filename, data data) do { let savedfile = try await file save() print("uploaded file \\(savedfile url ?? "")") } catch { print("error uploading file \\(error)") } } 2\ пример вы можете хранить изображения тренировок или ежедневные снимки прогресса let snapshotdata = // some image data from watch screenshot task { await uploadfile(data snapshotdata, filename "workout jpg") } 3\ соображения безопасности проверьте ваши acl файлов по умолчанию url адреса файлов доступны, если кто то получит прямую ссылку вы можете защитить или контролировать доступ к файлам через конфигурацию файлов вашего сервера parse шаг 7 – подтверждение электронной почты и сброс пароля 1\ обзор пользователи apple watch могут не всегда управлять входами непосредственно на часах, но включение подтверждения электронной почты помогает сохранить их данные в безопасности 2\ конфигурация панели управления back4app перейдите в настройки приложения → электронная почта включите подтверждение электронной почты настройте шаблоны по мере необходимости 3\ код/реализация для сброса пароля do { try await user requestpasswordreset(email "example\@domain com") } catch { print("error requesting password reset \\(error)") } do { try await user requestpasswordreset(email "example\@domain com") } catch { print("error requesting password reset \\(error)") } do { try await user requestpasswordreset(email "example\@domain com") } catch { print("error requesting password reset \\(error)") } шаг 8 – планирование задач с помощью облачных заданий 1\ что делают облачные задания облачные задания позволяют автоматизировать фоновые задачи, такие как ротация старых данных или генерация отчетов о использовании для вашей аналитики watchos 2\ пример в main js parse cloud job('cleanupmetrics', async (request) => { const query = new parse query('healthmetrics'); // for example, remove records older than 7 days const now = new date(); const cutoff = new date(now 7 24 60 60 1000); query lessthan('createdat', cutoff); const oldmetrics = await query find({ usemasterkey true }); await parse object destroyall(oldmetrics, { usemasterkey true }); return `deleted ${oldmetrics length} old records `; }); разверните ваш код перейдите в настройки приложения → настройки сервера → фоновые задания и запланируйте его на ежедневной основе шаг 9 – интеграция вебхуков 1\ определение вебхуки уведомляют внешние сервисы, когда в вашем приложении происходят определенные события например, вы можете отправлять уведомление в канал slack каждый раз, когда записывается новая метрика 2\ конфигурация в панели управления back4app перейдите в дополнительно → вебхуки добавьте вебхук с конечной точкой (например, url slack) выберите событие (например, “новая запись в healthmetrics”) 3\ пример каждый раз, когда пользователь добавляет новую запись dailysteps, ваш канал slack получает уведомление вы также можете определить более сложную логику в cloud code для отправки пользовательских данных в ваши внешние сервисы шаг 10 – изучение панели администратора back4app 1\ где это найти панель администратора доступна через вашу консоль back4app в разделе больше → админ приложение включите его и создайте администратора для управления данными через веб интерфейс, если вам нужен простой интерфейс для не технических заинтересованных сторон 2\ функции просмотр и редактирование данных управление журналами и облачными заданиями отслеживание аналитики или отправка уведомлений это простой способ сотрудничать с данными без необходимости прямого доступа к базе данных или коду заключение на протяжении этого руководства вы узнали как создать бэкенд для watchos с использованием мощных функций back4app вы настроили безопасную схему базы данных, написали облачный код, обрабатывали запросы в реальном времени и реализовали аутентификацию пользователей теперь ваше приложение watchkit может хранить и синхронизировать данные с минимальными усилиями следующие шаги улучшите свои приложения для часов путем интеграции продвинутых облачных функций для персонализированных уведомлений или преобразования данных изучите дополнительные функции ios , такие как фоновая синхронизация и стратегии кэширования для вашего apple watch читать официальную документацию back4app https //www back4app com/docs/ для получения дополнительной информации о продвинутой безопасности, аналитике и производительности оптимизируйте для app store для распространения вашего расширения watchos или отдельного приложения для часов расширяя свой бэкенд, вы можете предоставить надежные приложения для watchos которые работают без проблем даже при ограниченном интернет соединении продолжайте развивать и наслаждайтесь мощью back4app для ваших опытов с apple watch!