Quickstarters
Feature Overview
How to Build a Backend for Android?
46 мин
введение в этом учебном пособии вы узнаете, как создать полный бэкенд для приложения android (java) с использованием back4app мы пройдем через интеграцию основных функций back4app — таких как управление базами данных, функции cloud code, rest и graphql api, аутентификация пользователей и запросы в реальном времени (live queries) — чтобы создать безопасный, масштабируемый и надежный бэкенд, который бесшовно взаимодействует с вашим клиентом android вы также увидите, как быстрая настройка и интуитивно понятная среда back4app могут значительно сократить время и усилия по сравнению с ручной настройкой серверов и баз данных в процессе вы получите практический опыт с ключевыми функциональными возможностями, включая расширенные функции безопасности, планирование задач с помощью cloud jobs и настройку вебхуков для внешних интеграций к концу этого учебного пособия вы будете хорошо подготовлены, чтобы улучшить эту базовую настройку до готового к производству приложения или легко интегрировать пользовательскую логику и сторонние api по мере необходимости предварительные требования чтобы завершить это учебное пособие, вам понадобятся учетная запись back4app и новый проект back4app начало работы с back4app https //www back4app com/docs/get started/new parse app если у вас нет учетной записи, вы можете создать ее бесплатно следуйте приведенному выше руководству, чтобы подготовить ваш проект базовая среда разработки android (java) вы можете настроить это с помощью android studio https //developer android com/studio , или аналогичного инструмента убедитесь, что у вас установлена последняя версия android sdk java (версия 8 или выше) вам потребуется java для компиляции и запуска вашего android проекта знание java и основных концепций android документация для разработчиков android https //developer android com/docs если вы новичок в android, ознакомьтесь с официальной документацией или учебным пособием для начинающих перед началом убедитесь, что у вас есть все эти предварительные требования перед началом наличие настроенного проекта back4app и готовой локальной среды android поможет вам легче следовать за процессом шаг 1 – настройка проекта back4app создать новый проект первый шаг в создании вашего android бэкенда на back4app — это создание нового проекта если вы еще не создали его, выполните следующие шаги войдите в свою учетную запись back4app нажмите кнопку “новое приложение” в вашей панели управления back4app дайте вашему приложению имя (например, “android backend tutorial”) после создания проекта вы увидите его в списке на вашей панели управления back4app этот проект станет основой для всех конфигураций бэкенда, обсуждаемых в этом руководстве подключите parse sdk back4app полагается на платформу parse для управления вашими данными, предоставления функций в реальном времени, обработки аутентификации пользователей и многого другого подключение вашего android приложения к back4app включает установку parse android sdk и его инициализацию с учетными данными из вашей панели управления back4app получите ваши ключи parse в вашей панели управления back4app перейдите в раздел “настройки приложения” или “безопасность и ключи”, чтобы найти ваш идентификатор приложения и ключ клиента (или ключ javascript если указано) вы также найдете url адрес сервера parse (часто в формате https //parseapi back4app com ) установите sdk parse в вашем проекте android, добавив эти строки в ваш module level build gradle dependencies { implementation "com github parse community parse sdk android\ parse\ latest version here" } если вам нужен репозиторий jitpack в вашем root build gradle allprojects { repositories { maven { url "https //jitpack io" } } } инициализируйте parse в вашем android приложении создайте пользовательский application класс (например, app java ) и настройте androidmanifest xml package com example app; import android app application; import com parse parse; public class app extends application { @override public void oncreate() { super oncreate(); parse initialize(new parse configuration builder(this) applicationid("your app id") // from back4app clientkey("your client key") // from back4app server("https //parseapi back4app com/") build() ); } } затем добавьте этот пользовательский application класс в ваш androidmanifest xml \<?xml version="1 0" encoding="utf 8"?> \<manifest > \<application android\ name=" app" > \</application> \</manifest> завершив этот шаг, вы установили безопасное соединение между вашим android фронтендом и бэкендом back4app все запросы и транзакции данных безопасно маршрутизируются через этот sdk, что снижает сложность ручных вызовов rest или graphql (хотя вы все равно можете использовать их при необходимости) шаг 2 – настройка базы данных сохранение и запрос данных с вашим проектом back4app, настроенным и с интегрированным parse sdk в ваше android приложение, вы теперь можете начать сохранять и извлекать данные типичный способ создать и сохранить запись — использовать класс parseobject parseobject gamescore = new parseobject("gamescore"); gamescore put("score", 1337); gamescore put("playername", "sean plott"); gamescore put("cheatmode", false); gamescore saveinbackground(e > { if (e == null) { // success! } else { // failed } }); чтобы запросить данные parsequery\<parseobject> query = parsequery getquery("gamescore"); query whereequalto("playername", "sean plott"); query findinbackground((objects, e) > { if (e == null) { // objects now contains the results } else { // something went wrong } }); в качестве альтернативы вы можете использовать rest api конечные точки back4app 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 '{"score" 1337, "playername" "sean plott", "cheatmode" false}' \\ https //parseapi back4app com/classes/gamescore back4app также предоставляет graphql интерфейс mutation { creategamescore(input { fields { score 1337 playername "sean plott" cheatmode false } }) { gamescore { objectid score playername cheatmode } } } эти разнообразные варианты позволяют вам интегрировать операции с данными таким образом, который лучше всего подходит вашему процессу разработки — будь то через parse android sdk, rest или graphql проектирование схемы и типы данных по умолчанию parse позволяет создание схемы на лету , но вы также можете определить свои классы и типы данных в панели управления back4app для большего контроля перейдите в раздел “база данных” в вашей панели управления back4app создайте новый класс (например, “gamescore”) и добавьте соответствующие столбцы back4app также поддерживает различные типы данных string , number , boolean , object , date , file , pointer, array, relation , geopoint , и polygon вы можете выбрать подходящий тип для каждого поля back4app предлагает ai agent , который может помочь вам спроектировать вашу модель данных откройте ai agent из вашей панели управления приложением или в меню опишите вашу модель данных простым языком (например, “пожалуйста, создайте новое приложение todo с полной схемой класса ”) позвольте ai agent создать схему для вас реляционные данные если у вас есть реляционные данные — скажем, объект category который указывает на несколько объектов gamescore — вы можете использовать pointers или relations в parse например // linking a gamescore to a category with a pointer public void creategamescoreforcategory(string categoryobjectid, int scorevalue) { parseobject gamescore = new parseobject("gamescore"); // construct a pointer to the category parseobject categorypointer = parseobject createwithoutdata("category", categoryobjectid); // set fields gamescore put("score", scorevalue); gamescore put("category", categorypointer); gamescore saveinbackground(e > { if (e == null) { // success } else { // error } }); } когда вы выполняете запрос, вы можете включить данные указателя parsequery\<parseobject> query = parsequery getquery("gamescore"); query include("category"); query findinbackground((scores, e) > { if (e == null) { // scores now has category details } }); живые запросы для обновлений в реальном времени back4app предоставляет live queries вы можете подписаться на изменения в конкретном классе из вашего android приложения включите live queries в вашей панели управления back4app в разделе server settings инициализируйте live query в вашем коде в android вы обычно полагаетесь на библиотеку parse livequery для android https //github com/parse community/parselivequery android для подписки шаги аналогичны другим платформам, но вы интегрируете livequeryclient dependencies { implementation "com github parse community\ parselivequery android\ latest version here" } затем livequeryclient livequeryclient = new livequeryclient builder("wss\ //your subdomain here b4a io", 443) build(); parsequery\<parseobject> query = parsequery getquery("gamescore"); subscriptionhandling\<parseobject> subscriptionhandling = livequeryclient subscribe(query); subscriptionhandling handleevents((query1, event, gamescore) > { switch (event) { case create // a new gamescore object was created break; case update // existing gamescore updated break; case delete // existing gamescore deleted break; default break; } }); подписываясь, вы получаете уведомления в реальном времени, когда создается, обновляется или удаляется новая запись эта функция особенно ценна для совместных или динамических приложений, где нескольким пользователям необходимо видеть последние данные без обновления страницы шаг 3 – применение безопасности с помощью acl и clp механизм безопасности back4app back4app серьезно относится к безопасности, предоставляя списки контроля доступа (acl) и разрешения на уровне класса (clp) эти функции позволяют ограничить, кто может читать или записывать данные на уровне объекта или класса, обеспечивая, чтобы только авторизованные пользователи могли изменять ваши данные списки контроля доступа (acl) acl является применяемым к отдельным объектам для определения того, какие пользователи, роли или общественность могут выполнять операции чтения/записи например public void createprivatescore(int scorevalue, parseuser owneruser) { parseobject gamescore = new parseobject("gamescore"); gamescore put("score", scorevalue); parseacl acl = new parseacl(owneruser); acl setpublicreadaccess(false); acl setpublicwriteaccess(false); gamescore setacl(acl); gamescore saveinbackground(e > { if (e == null) { // success } else { // failed } }); } разрешения на уровне класса (clp) clp управляют стандартными разрешениями для всего класса, такими как возможность публичного чтения или записи, или если только определенные роли могут получить к нему доступ перейдите в свою панель управления back4app , выберите свое приложение и откройте раздел база данных выберите класс (например, “gamescore”) откройте вкладку разрешения на уровне класса настройте свои параметры по умолчанию эти разрешения устанавливают базовый уровень, в то время как acl уточняют разрешения для отдельных объектов надежная модель безопасности обычно сочетает как clp (широкие ограничения), так и acl (точные ограничения для каждого объекта) для получения дополнительной информации перейдите на руководство по безопасности приложений https //www back4app com/docs/security/parse security шаг 4 – написание и развертывание функций облачного кода почему cloud code cloud code — это функция среды parse server, которая позволяет вам запускать пользовательский javascript код на стороне сервера, не требуя управления вашими серверами или инфраструктурой путем написания cloud code вы можете расширить ваш бэкенд back4app дополнительной бизнес логикой, валидациями, триггерами и интеграциями, которые работают безопасно и эффективно на parse server пример функции простая функция cloud code, которая вычисляет длину текстовой строки, отправленной с клиента main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); развертывание back4app cli панель управления в панели управления вашего приложения перейдите в cloud code > функции скопируйте/вставьте ваш код в main js и нажмите развернуть вызов вашей функции с android (java) с использованием parse sdk hashmap\<string, object> params = new hashmap<>(); params put("text", "hello back4app"); parsecloud callfunctioninbackground("calculatetextlength", params, (result, e) > { if (e == null) { // result is a hashmap; get the length map\<?, ?> mapresult = (map\<?, ?>) result; object lengthval = mapresult get("length"); // cast to number, etc } else { // handle error } }); вы также можете вызвать его через rest или graphql эта гибкость позволяет вам интегрировать вашу пользовательскую логику в ваш android интерфейс или любой другой клиент, который поддерживает rest или graphql шаг 5 – настройка аутентификации пользователей аутентификация пользователей в back4app back4app использует класс parse user в качестве основы для аутентификации по умолчанию parse обрабатывает хеширование паролей, токены сессий и безопасное хранение это означает, что вам не нужно вручную настраивать сложные потоки безопасности настройка аутентификации пользователей в android приложении на java вы можете создать нового пользователя parseuser user = new parseuser(); user setusername("myusername"); user setpassword("mypassword"); user setemail("email\@example com"); user signupinbackground(e > { if (e == null) { // sign up success } else { // sign up failed } }); войдите в существующего пользователя parseuser logininbackground("myusername", "mypassword", (parseuser, e) > { if (e == null) { // logged in successfully } else { // login failed } }); через rest вход может выглядеть так curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login управление сессиями после успешного входа parse создает токен сессии , который хранится в объекте пользователя вы можете проверить текущего вошедшего пользователя parseuser currentuser = parseuser getcurrentuser(); if (currentuser != null) { // user is logged in } else { // no user is logged in } вы можете выйти parseuser logout(); интеграция социального входа back4app и parse могут интегрироваться с популярными провайдерами oauth, такими как google или facebook например, вы можете настроить facebook вход, настроив facebook app id и используя специальные parse facebookutils для android подробные инструкции могут различаться, поэтому обратитесь к документация по социальному входу https //www back4app com/docs/platform/sign in with apple подтверждение электронной почты и сброс пароля чтобы включить подтверждение электронной почты и сброс пароля перейдите в настройки электронной почты в вашей панели управления back4app включите подтверждение электронной почты настройте адрес отправителя и шаблоны электронной почты это помогает убедиться, что электронная почта вашего пользователя действительна и предоставляет безопасный метод восстановления пароля шаг 6 – обработка хранения файлов загрузка и получение файлов parse включает класс parsefile для обработки загрузки файлов, которые back4app хранит безопасно file file = new file("/path/to/image jpg"); byte\[] data = // read file as bytes parsefile parsefile = new parsefile("image jpg", data); parsefile saveinbackground(e > { if (e == null) { // file saved } else { // error } }); прикрепите файл к объекту parseobject photo = new parseobject("photo"); photo put("imagefile", parsefile); photo saveinbackground(); получите url файла parsefile imagefile = photo getparsefile("imagefile"); string url = imagefile geturl(); безопасность файлов parse server предоставляет гибкие настройки для управления безопасностью загрузки файлов, включая контроль над тем, могут ли анонимные или аутентифицированные пользователи загружать файлы обязательно ознакомьтесь с документацией для более сложных настроек шаг 7 – подтверждение электронной почты и сброс пароля обзор подтверждение электронной почты гарантирует, что новые пользователи владеют адресом электронной почты, использованным для регистрации сброс пароля позволяет пользователям безопасно восстанавливать свои учетные записи конфигурация панели управления back4app включите подтверждение электронной почты в панели управления вашего приложения перейдите в настройки электронной почты включите сброс пароля настройте процесс сброса пароля по электронной почте код/реализация запуск сброса пароля на java parseuser requestpasswordresetinbackground("email\@example com", e > { if (e == null) { // email sent } else { // something went wrong } }); шаг 8 – планирование задач с помощью облачных заданий облачные задания используйте облачные задания в back4app для планирования повторяющихся задач, таких как очистка старых данных или отправка ежедневных писем пример parse cloud job('cleanupoldscores', async (request) => { const gamescore = parse object extend('gamescore'); const query = new parse query(gamescore); // e g , remove scores older than 30 days // }); запланируйте это в панели управления back4app > настройки приложения > настройки сервера > фоновая работа шаг 9 – интеграция вебхуков вебхуки позволяют вашему приложению back4app отправлять http запросы на внешний сервис, когда происходят определенные события, например, отправка данных на сторонний сервис, такой как stripe перейдите к вебхукам в вашей панели управления back4app > дополнительно > вебхуки добавьте вебхук с вашим внешним конечным пунктом настройте триггеры для соответствующих событий шаг 10 – изучение панели администратора back4app приложение back4app admin app – это веб интерфейс управления, предназначенный для нетехнических пользователей он позволяет быстро выполнять операции crud и управлять данными без написания кода включение приложения администратора перейдите в панель управления приложением > дополнительно > приложение администратора и нажмите включить приложение администратора создайте первого администратора и поддомен, и у вас будет веб интерфейс для администрирования данных заключение следуя этому подробному руководству, вы создали безопасный бэкенд для android (java) приложения на back4app настроили базу данных с классами схем, типами данных и отношениями интегрировали запросы в реальном времени (live queries) для немедленного обновления данных применили меры безопасности с использованием acl и clp для защиты и управления доступом к данным реализовали функции cloud code для выполнения пользовательской бизнес логики на стороне сервера настроили аутентификацию пользователей с поддержкой проверки электронной почты и сброса пароля управляли загрузкой файлов и их извлечением, с дополнительными мерами безопасности для файлов запланировали облачные задания для автоматизированных фоновых задач использовали вебхуки для интеграции с внешними сервисами изучили панель администратора back4app для управления данными с надежным фронтендом на android (java) и мощным бэкендом back4app вы теперь хорошо подготовлены для разработки функциональных, масштабируемых и безопасных приложений продолжайте исследовать более продвинутые функции, интегрируйте свою бизнес логику и используйте возможности back4app, чтобы сэкономить вам бесчисленные часы на администрировании серверов и баз данных удачного кодирования! следующие шаги создайте готовое к производству android приложение путем расширения этого бэкенда для обработки более сложных моделей данных, стратегий кэширования и оптимизации производительности интегрируйте продвинутые функции такие как специализированные потоки аутентификации, контроль доступа на основе ролей или внешние api (например, платежные шлюзы) посмотрите официальную документацию back4app для более глубокого изучения вопросов безопасности, настройки производительности и анализа логов изучите другие учебные пособия по приложениям для чата в реальном времени, iot панелям или сервисам на основе местоположения вы можете комбинировать техники, изученные здесь, с api третьих сторон для создания сложных, реальных приложений