Quickstarters
Feature Overview
Как создать бэкэнд для Swift?
43 мин
введение в этом учебном пособии вы научитесь создавать полный бэкенд для приложения на swift с использованием back4app мы пройдем через интеграцию основных функций back4app — таких как управление базами данных, функции cloud code, rest и graphql api, аутентификация пользователей, запросы в реальном времени (live queries) и многое другое — чтобы создать безопасный, масштабируемый и надежный бэкенд, который бесшовно взаимодействует с вашим клиентским приложением на swift используя быстрое развертывание и интуитивно понятную среду back4app, вы значительно сократите время и усилия, необходимые по сравнению с ручной настройкой серверов и баз данных в процессе вы получите практический опыт работы с важными функциями, включая расширенные функции безопасности, планирование задач с помощью cloud jobs и настройку вебхуков для внешних интеграций к концу этого учебника вы будете хорошо подготовлены, чтобы улучшить эту основную серверную службу до готового к производству приложения или легко интегрировать пользовательскую логику и сторонние api по мере необходимости вы увидите, как работа с платформой baas может преобразовать разработку серверной части в более упрощенный процесс, особенно при создании быстрой серверной части или любого другого серверного приложения давайте начнем! предварительные требования чтобы завершить этот учебник, вам потребуется учетная запись back4app и новый проект back4app начало работы с back4app https //www back4app com/docs/get started/new parse app если у вас нет учетной записи, вы можете создать ее бесплатно следуйте приведенному выше руководству, чтобы подготовить ваш проект среда разработки swift вы можете использовать xcode https //developer apple com/xcode/ в качестве вашей ide для создания приложений ios или macos с использованием swift убедитесь, что у вас установлена последняя стабильная версия xcode знание языка программирования swift если вы новичок в swift, ознакомьтесь с официальной документацией по swift https //swift org/documentation/ или учебником для начинающих перед началом parse swift sdk если вы используете cocoapods, добавьте pod 'parseswiftog' в ваш podfile или, если вы используете swift package manager, добавьте package(url "https //github com/netreconlab/parse swift git", from "5 0 0") в ваши зависимости читайте больше в документации parse swift https //docs parseplatform org/parse swift/guide/ убедитесь, что у вас есть все эти предварительные условия, прежде чем вы начнете настройка вашего проекта back4app и готовая локальная среда swift помогут вам легче следовать инструкциям шаг 1 – создание нового проекта на back4app и подключение первый шаг в создании вашего бэкенда на swift на back4app – это создание нового проекта этот проект является основой для всех конфигураций бэкенда, обсуждаемых в этом руководстве swift может бесшовно подключаться к вашему новому бэкенду, используя parse swift sdk давайте посмотрим, как создать новый проект войдите в свою учетную запись back4app нажмите кнопку “новое приложение” в вашей панели управления back4app назовите ваше приложение (например, “swift backend tutorial”) после создания вы увидите новое приложение в вашей панели управления здесь вы настроите свою базу данных, облачные функции и другие важные настройки для вашего бэкенд приложения подключите parse swift sdk back4app is powered by the parse platform, which provides the foundation for your database, real time updates, authentication, and more your swift application can connect to back4app by installing and initializing the parse swift sdk retrieve your parse keys in your back4app dashboard, go to your app’s “app settings” or “security & keys” to find your application id and client key you will also see your parse server url (often https //parseapi back4app com ) install the parse swift sdk swift package manager (recommended) dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] cocoapods pod 'parseswiftog' initialize parse in your app вы можете сделать это в главной точке входа вашего проекта swift (например, appdelegate swift или в структуре swiftui @main например import swiftui import parseswift @main struct myapp app { init() { // replace placeholders with your back4app credentials parseswift initialize( applicationid "your application id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } var body some scene { windowgroup { contentview() } } } с этой настройкой ваш клиент swift теперь может отправлять безопасные запросы в back4app вы установили надежное соединение, которое упрощает операции с данными без необходимости вручную выполнять rest или graphql вызовы (хотя вы все равно можете их использовать, если хотите) шаг 2 – настройка базы данных на этом шаге вы настроите свою базу данных на back4app и увидите, как управлять данными из вашего кода swift back4app использует модель данных parse, позволяя вам хранить объекты в структурах, похожих на классы swift может легко взаимодействовать с этими классами через sdk parse swift создание модели данных перейдите в раздел “база данных” на вашей панели управления back4app создайте новый класс (например, “todo”) добавьте столбцы для необходимых вам данных, такие как “title” (string) и “iscompleted” (boolean) вы также можете позволить sdk parse swift автоматически создать эти столбцы в первый раз, когда вы сохраняете объект в любом случае, ваша схема должна соответствовать данным, которые вы храните, чтобы ваше приложение могло обрабатывать их без проблем создание модели данных с помощью ai агента back4app предоставляет ai агента, который может помочь вам разработать вашу модель данных откройте ai агента из панели управления или меню вашего приложения опишите вашу модель данных на естественном языке например “пожалуйста, создайте новый проект swift с схемой класса todo ” позвольте ai агенту создать схему для вас автоматически чтение и запись данных parse swift sdk используя sdk parse swift, вы можете создать структуру, соответствующую parseobject для представления ваших данных например, если у вас есть класс todo import parseswift struct todo parseobject { // parseobject protocol properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } создайте объект todo и сохраните var newtodo = todo() newtodo title = "buy groceries" newtodo iscompleted = false task { do { let saved = try await newtodo save() print("saved ", saved) } catch { print("error saving todo ", error) } } запрос всех элементов todo task { do { let todos = try await todo query() find() print("todos ", todos) } catch { print("error fetching ", error) } } чтение и запись данных rest api если вы предпочитаете стандартные http запросы, вы можете использовать rest api например, чтобы создать новый todo curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "walk the dog", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo чтение и запись данных graphql api graphql также поддерживается вот пример мутации для создания todo mutation { createtodo(input { fields { title "finish homework" iscompleted false } }) { todo { objectid title iscompleted } } } работа с живыми запросами если вашему приложению на swift нужны обновления в реальном времени, back4app поддерживает живые запросы для ios включите живые запросы в настройках вашего сервера подключитесь указав parse livequeryserverurl в вашем приложении parse configuration serverurl = url(string "https //parseapi back4app com")! parse configuration livequeryserverurl = url(string "wss\ //your subdomain b4a io")! подпишитесь на живые обновления let subscription = todo query() subscribecallback { subscriptionstate in switch subscriptionstate { case subscribed(let querysubscription) print("subscribed to todo changes!") default break } } теперь, когда todo создается, обновляется или удаляется, вы будете получать обновления в реальном времени это особенно полезно для совместных или чувствительных к времени функций в разработке вашего бэкенда на swift шаг 3 – применение безопасности с помощью acl и clp что такое acl и clp? back4app использует списки управления доступом (acl) и разрешения на уровне класса (clp) для защиты ваших данных acl позволяют вам определять разрешения для каждого объекта, в то время как clp устанавливают правила доступа по умолчанию для всего класса разрешения на уровне класса в панели управления back4app перейдите в базу данных и выберите класс (например, “todo”) откройте разрешения на уровне класса настройте ограничения на чтение, запись или публичный доступ списки управления доступом (acl) при создании или обновлении parseobject в swift вы можете установить acl например var acl = parseacl() // only let the current user read and write acl setreadaccess(userid "current user id", value true) acl setwriteaccess(userid "current user id", value true) var todo = todo() todo acl = acl это гарантирует, что только указанный пользователь может читать или изменять этот объект сочетание acl и clp формирует надежную, многоуровневую модель безопасности для данных вашего приложения шаг 4 – написание функций облачного кода зачем облачный код? облачный код позволяет вам выполнять серверную логику на swift (или javascript, если использовать оригинальный стиль облачного кода parse) без раскрытия секретов клиенту это идеально подходит для валидаций, триггеров, запланированных задач и многого другого пример функции вот пример на основе javascript, но вы также можете работать на typescript или вызывать из swift в вашей папке cloud code создайте main js parse cloud define("gettaskscount", async (request) => { const query = new parse query("todo") const count = await query count({ usemasterkey true }) return count }) parse cloud beforesave("todo", async (request) => { const todo = request object if (!todo get("title")) { throw "cannot save a todo without a title " } }) вы можете установить модули npm, включив их в ваш package json файл, а затем вызывая их в main js после развертывания вы можете вызывать эти функции из вашего кода swift, используя callfunction развертывание разверните ваш cloud code через b4a deploy вы также можете развернуть через панель управления back4app, перейдя в cloud code > functions вставьте ваш код в онлайн редактор и нажмите deploy вызов из swift task { do { let result = try await parsecloud callfunction("gettaskscount", with \[string any]\()) print("count ", result) } catch { print("error calling cloud function ", error) } } шаг 5 – настройка аутентификации включение аутентификации пользователей в панели dashboard , вы увидите класс по умолчанию user для учетных записей пользователей включите любые дополнительные провайдеры аутентификации (apple, facebook, google и т д ) на странице auth settings вашего приложения, если это необходимо регистрация и вход в систему (swift) struct user parseuser { var objectid string? var username string? var email string? var password string? var emailverified bool? var createdat date? var updatedat date? var acl parseacl? var originaldata data? } // sign up task { do { var newuser = user() newuser username = "alice" newuser password = "p\@ssword" let signedup = try await newuser signup() print("user signed up ", signedup) } catch { print("error signing up ", error) } } // log in task { do { let user = try await user login(username "alice", password "p\@ssword") print("logged in user ", user) } catch { print("error logging in ", error) } } социальный вход back4app поддерживает вход через oauth с google, apple и facebook настройте этих провайдеров на странице auth и используйте соответствующий код интеграции parse swift в вашем приложении swift (например, parsefacebookutils или parseappleutils ) для обработки потоков аутентификации для получения подробной информации смотрите документация по социальному входу https //www back4app com/docs/platform/sign in with apple шаг 6 – обработка хранения файлов настройка хранения файлов вы можете хранить изображения, видео или любые файлы в back4app в swift у вас есть parsefile let imagedata = data(/ your image bytes /) let parsefile = parsefile(name "photo jpg", data imagedata) task { do { let savedfile = try await parsefile save() print("file saved ", savedfile url ?? "no url") } catch { print("error uploading file ", error) } } затем вы можете прикрепить этот файл к parseobject и сохранить получите url файла, чтобы отобразить или скачать его в другом месте соображения по безопасности чтобы ограничить доступ к файлам, вы можете использовать конфигурацию файлов parse server https //www back4app com/docs/platform/file storage например, вы можете разрешить загрузку файлов только аутентифицированным пользователям или указать права на чтение/запись в вашем коде swift шаг 7 – подтверждение электронной почты и сброс пароля почему нужны письма для подтверждения и сброса пароля? подтверждение электронной почты пользователя гарантирует наличие реального, активного почтового ящика сброс пароля помогает вашим пользователям безопасно восстановить доступ к учетной записи, если они забыли учетные данные настройка в back4app перейдите в настройки электронной почты и включите подтверждение электронной почты отредактируйте свои шаблоны электронной почты для процессов подтверждения и сброса запуск сброса пароля из swift task { do { try await user passwordreset(email "alice\@example com") print("password reset email sent!") } catch { print("error requesting password reset ", error) } } шаг 8 – планирование задач с помощью облачных заданий облачные задания вы можете планировать серверные задачи на back4app например, очистка старых данных или отправка еженедельных отчетов определите задание в вашем облачном коде и запланируйте его через панель управления back4app parse cloud job("cleanupoldtodos", async (request) => { const now = new date() // example logic remove todos older than 30 days // use master key for privileged operations }) затем, в настройки сервера back4app > фоновая работа , вы можете запланировать его выполнение ежедневно или с любым интервалом шаг 9 – интеграция вебхуков что такое вебхуки? вебхуки позволяют вашему приложению автоматически отправлять данные на внешние сервисы всякий раз, когда происходят определенные события это идеально подходит для интеграции с slack, stripe или другими сторонними api конфигурация в вашей панели управления back4app перейдите в дополнительно > вебхуки добавьте конечную точку вебхука (например, https //example com/webhook ) выберите триггеры (например, создание объекта в “todo”) для пользовательской логики вы также можете отправлять запросы на внешние url в триггерах облачного кода шаг 10 – изучение панели администратора back4app что такое панель администратора? приложение back4app admin app – это интерфейс с возможностью щелчка мышью для нетехнического или вспомогательного персонала он предоставляет простой графический интерфейс для выполнения операций crud с вашими данными — отлично подходит для управления данными вне вашей среды разработки включение приложения администратора перейдите в панель управления приложением > дополнительно > приложение администратора включите приложение администратора и выберите поддомен создайте администратора после активации любой человек с соответствующими учетными данными может просматривать и редактировать ваши данные через удобный веб интерфейс — код не требуется заключение следуя этому полному руководству, вы узнали как создать бэкенд для swift с использованием back4app в частности, вы создали безопасный бэкенд для вашего swift приложения настроили базу данных с классами схем и отношениями данных работали с запросами в реальном времени (live queries) для немедленных обновлений установили надежную безопасность с помощью acl и clp использовали cloud code для выполнения пользовательской логики на стороне сервера реализовали аутентификацию пользователей с проверкой и сбросом паролей обрабатывали загрузку файлов безопасно запланировали автоматизированные задачи с помощью cloud jobs узнали о webhooks для интеграции внешних api изучили панель администратора для прямого управления данными теперь у вас есть функциональный, масштабируемый бэкенд сервис для вашего swift приложения — который можно легко расширить для обработки более сложных функций, подключения к сторонним сервисам или адаптации к большему пользовательскому трафику вы также увидели на собственном опыте, как сочетание функций baas от back4app и современного синтаксиса swift может ускорить разработку бэкенда следующие шаги создайте готовое к производству приложение на swift , разработав ваш ui/ux интегрируйте расширенные функции такие как специализированная аутентификация (на основе ролей, sso) или дополнительная логика cloud code для специфических правил посмотрите официальную документацию back4app для более глубокого изучения логов, аналитики или расширенной безопасности изучите другие учебники по чатам в реальном времени, iot панелям управления или приложениям на основе местоположения объедините их с внешними api для решения реальных задач вот как создать бэкенд для swift с использованием back4app! удачного кодирования!