Как создать бэкэнд для приложения для iOS?

Back4App Guide _ How to Build a Backend for Your iOS App_-2
Back4App Guide _ How to Build a Backend for Your iOS App_-2

Приложения для iOS, как и веб-приложения, требуют определенного способа хранения и отслеживания данных. Независимо от того, хранятся ли эти данные в облачном бэкенде или на локальном сервере, который запускается лично, бэкенд необходим для управления пользовательскими данными.

Однако создание бэкенда для вашего iOS-приложения с нуля может оказаться непростой задачей, особенно если вы совсем новичок в разработке iOS и бэкенда.

В этом уроке вы узнаете, как создать бэкэнд для вашего приложения для iOS. Сначала мы сделаем обзор разработки под iOS и обсудим ее преимущества и ограничения.

Затем вы изучите различные доступные вам варианты бэкенда. Наконец, вы узнаете, как использовать Back4App, Backend as a Service (BaaS), в качестве бэкенда для вашего приложения для iOS.

Обзор iOS

Компания Apple разработала iOS в качестве основной операционной системы для работы мобильных приложений, созданных на ее телефонах iPhone, iPad и устройствах iPod Touch.

Создание таких приложений и их оптимизация для работы на платформе iOS по замыслу Apple называется iOS-разработкой. Приложения для iOS пишутся с помощью двух языков программирования – Objective-C и, с недавних пор, Swift.

Objective-C был основным языком, используемым для разработки приложений для iOS, до появления Swift в 2014 году. Swift был разработан как более современный и удобный язык, с такими функциями, как вывод типов и опции, которые облегчают чтение и написание.

Оба языка можно использовать в одном проекте. Это связано с тем, что Swift, согласно документации Swift, был разработан для совместимости с Objective-C и может использоваться для взаимодействия с существующим унаследованным кодом Objective-C.

Для создания приложений для iOS компания Apple предоставляет Xcode– интегрированную среду разработки (IDE), в которой удобно писать код, собирать и разрабатывать приложения для iOS.

Преимущества разработки приложений для iOS

Как разработчик, создание приложений для iOS может быть полезно следующими способами:

Высококачественный пользовательский опыт

Приложения для iOS известны своим исключительным пользовательским опытом, интуитивно понятным и отточенным дизайном, который пользователи находят привлекательным и простым в использовании.

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

Кроме того, Apple предоставляет разработчикам полный набор инструментов и ресурсов для дизайна, чтобы их приложения соответствовали самым высоким стандартам качества.

Приложения для iOS также оптимизированы под специфическое аппаратное и программное обеспечение устройств Apple, что обеспечивает высокую производительность, плавную анимацию и высококачественную графику.

Лучшая безопасность

Еще одно существенное преимущество приложений для iOS – уровень безопасности. Это обусловлено несколькими факторами, в первую очередь строгим процессом проверки App Store, надежным шифрованием и функциями, ориентированными на конфиденциальность.

Процесс проверки App Store призван обеспечить соответствие всех приложений App Store строгим требованиям к содержанию и безопасности. Это включает в себя проверку на наличие вредоносного кода, вредоносных программ и других потенциальных угроз безопасности.

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

Согласованность на всех устройствах

Приложения для iOS созданы для того, чтобы выглядеть и функционировать одинаково на всех устройствах Apple, включая iPhone, iPad и iPod Touch.

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

Инструменты разработчика

Apple предоставляет разработчикам iOS мощные инструменты, которые облегчают разработку, тестирование и отладку приложений для iOS.

Эти инструменты включают в себя iOS SDK, Xcode и ряд других инструментов и ресурсов, которые помогают оптимизировать работу разработчиков и качество создаваемых приложений.

Ограничения при разработке приложений для iOS

Разработка под iOS не является безупречной. Существуют ограничения, с которыми вы столкнетесь при разработке приложений для iOS. Некоторые из них включают.

Ограниченная совместимость устройств

Основное разочарование, возникающее при разработке приложений для iOS, – это их ограниченная совместимость с различными устройствами. В современном мире существует широкий спектр производителей мобильных устройств и столь же широкий спектр преданных пользователей.

Однако приложения для iOS работают только на собственном оборудовании Apple. Это означает, что приложения можно использовать только на устройствах iPhone, iPad и iPod Touch. Это ограничивает потенциальную аудиторию приложения, которое вы создаете, и ограничивает его экосистемой Apple.

Несмотря на то, что у Apple большая база пользователей, ограниченная совместимость приложений для iOS с устройствами может стать недостатком, если вы хотите охватить более широкую аудиторию за пределами Apple.

Процесс утверждения в магазине

Процесс проверки App Store от Apple известен своей строгостью и может занимать больше времени, чем в других магазинах приложений, таких как Google Play.

Процесс рассмотрения призван гарантировать, что все приложения в App Store соответствуют требованиям Apple по качеству, безопасности и содержанию. Однако это может быть непросто из-за длительного времени ожидания, что задерживает выход вашего приложения в свет.

Закрытая экосистема

Apple жестко контролирует аппаратное и программное обеспечение своих устройств, а это значит, что с iOS-устройствами можно использовать только одобренное Apple программное и аппаратное обеспечение. Закрытая экосистема также ограничивает возможности кастомизации и может создавать препятствия, если вы хотите предложить пользователям вашего приложения большую гибкость.

Такая закрытая система усложнит для разработчиков интеграцию со сторонними сервисами и API.

Варианты бэкенда для iOS-приложений

Теперь, когда вы знаете о преимуществах и ограничениях разработки iOS-приложений, вам следует разобраться в различных вариантах бэкенда, доступных для вашего iOS-приложения.

IaaS

Инфраструктура как услуга (IaaS) – это модель облачных вычислений, при которой сторонний провайдер предлагает виртуализированные вычислительные ресурсы через Интернет пользователям, которым они могут понадобиться для запуска личного программного обеспечения.

Использование IaaS – это как аренда виртуального компьютера у стороннего провайдера. Вместо того чтобы покупать и хранить компьютер, вы можете получить доступ к компьютеру, размещенному у провайдера через Интернет.

Этот компьютер – просто виртуальное представление реального компьютера, со всей базовой инфраструктурой для создания собственной виртуальной вычислительной среды с такими характеристиками, как место для хранения данных, вычислительная мощность и память.

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

С помощью IaaS вы можете увеличивать или уменьшать масштабы по мере необходимости и платить только за то, что используете. Примерами IaaS-сервисов являются Amazon Web Services (AWS), Microsoft Azure и Google Cloud Platform.

PaaS

Платформа как услуга (PaaS) – это еще одна модель облачных вычислений, похожая на IaaS. Поставщики PaaS предлагают предварительно сконфигурированную платформу с минимальной настройкой, что упрощает и ускоряет создание и развертывание приложений.

Основное различие между IaaS и PaaS заключается в уровне контроля над базовой инфраструктурой.

При использовании IaaS поставщик предлагает виртуализированные вычислительные ресурсы, такие как серверы и хранилища, через Интернет. В то же время вы полностью контролируете виртуальную среду, включая операционную систему, промежуточное ПО и приложения.

С другой стороны, в случае PaaS поставщик предлагает предварительно сконфигурированную платформу для операционных систем, промежуточного ПО и других программных компонентов, необходимых для разработки и развертывания приложений. Вам нужно сосредоточиться только на разработке приложения, а поставщик PaaS позаботится о базовой инфраструктуре.

Примерами PaaS-сервисов являются Heroku, Google App Engine и Microsoft Azure App Service.

BaaS

Благодаря сервису Backend as a Service (BaaS) вы можете легко интегрировать облачный бэкэнд в свое приложение, не создавая и не управляя базовой инфраструктурой.

Поставщики BaaS предлагают готовые бэкэнд-сервисы, которые обычно не предоставляются в PaaS или IaaS, например базы данных, аутентификацию пользователей, хранение файлов, бессерверные функции и push-уведомления. Теперь вы можете интегрировать эти сервисы в свои приложения через API или SDK.

Это избавляет вас от необходимости создавать и поддерживать собственную инфраструктуру бэкенда, позволяя сосредоточиться на создании фронтальной части приложения. Примерами BaaS-сервисов являются Back4App, Firebase и 8Base.

Сколько стоит разработка бэкенда для iOS-приложения?

Стоимость разработки бэкенда приложения для iOS может варьироваться в зависимости от различных факторов, включая время, ресурсы и требуемые человеческие ресурсы.

Время, затрачиваемое на создание и настройку бэкенда, является важным фактором, который необходимо учитывать. Время, необходимое для создания бэкенда, зависит от сложности функциональных возможностей приложения и интеграции бэкенда с приложением.

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

Человеческие ресурсы, необходимые для разработки бэкенда, – еще один важный фактор, влияющий на стоимость. Наем и удержание опытных разработчиков может быть дорогостоящим, а стоимость обучения и развития может увеличить общую стоимость разработки бэкенда.

Стоимость разработки бэкенда для iOS-приложения можно снизить, используя существующие бэкенд-решения, такие как Back4app.

Как построить бэкенд iOS-приложения с помощью Back4app?

Back4App – это платформа Backend as a Service (BaaS) с готовой инфраструктурой бэкенда для разработки мобильных и веб-приложений. Она предоставляет мощную и масштабируемую инфраструктуру бэкенда, включая управление базами данных, аутентификацию пользователей, push-уведомления и многое другое.

Back4App – отличный вариант бэкенда для вашего iOS-приложения по нескольким причинам. Во-первых, он предоставляет простой и удобный интерфейс, который позволяет легко управлять данными и API.

Во-вторых, она предлагает исчерпывающую документацию, которая проведет вас через все этапы процесса разработки. Кроме того, Back4App предоставляет масштабируемый облачный хостинг, способный удовлетворить потребности любого приложения, большого или маленького, и предлагает высококлассные средства безопасности.

Выполнив описанные ниже действия, вы сможете создать бэкэнд приложения для iOS с помощью Back4App.

Шаг 1: Зарегистрируйтесь для получения бесплатной учетной записи Back4app

Чтобы создать внутреннюю инфраструктуру для вашего iOS-приложения, зарегистрируйте бесплатный аккаунт Back4App на официальном сайте. С помощью учетной записи Back4App вы сможете создавать и настраивать бэкэнд для вашего iOS-приложения и управлять всеми процессами, связанными с данными, из этого бэкэнда.

Чтобы получить бесплатный аккаунт, перейдите на сайт Back4App и зарегистрируйтесь, используя учетную запись Google, аккаунт GitHub или адрес электронной почты.

Шаг 2: Создайте новое приложение

Теперь, когда у вас есть аккаунт Back4App, вы можете войти в систему и приступить к созданию НОВОГО приложения. Кнопка для этого будет расположена в правом верхнем углу страницы вашего аккаунта. Вы должны выбрать опцию Backend as a Service для своего приложения.

Дайте своему новому приложению подходящее имя и нажмите кнопку “Создать “.

Теперь Back4App создаст ваше приложение и переведет вас на свою приборную панель.

Шаг 3: Подключите ваше приложение для iOS к Back4app

Следующим шагом будет подключение вашего приложения для iOS к бэкенду Back4App. Для этого вы должны установить Parse SDK в свое приложение для iOS. Ваше приложение будет использовать этот SDK для получения прямой связи с бэкендом.

Прежде чем настраивать соединение, необходимо иметь работающее приложение для iOS. Как уже говорилось ранее, приложения для iOS создаются с помощью Xcode, IDE Apple для разработки программного обеспечения Apple.

Для работы с этим руководством вам понадобится последняя версия Xcode (версия 13.0.0 или более поздняя), установленная на вашем компьютере Mac. Некоторые инструменты и функции, которые вы будете использовать в этом руководстве, доступны только в этих версиях Xcode.

Для начала запустите Xcode и создайте новый проект Xcode iOS App:

Инициализация нового приложения в xcode

Вам будет предложено ввести название приложения и некоторые сведения о конфигурации. Обязательно выберите SwiftUI в качестве интерфейса.

Конфигурация нового приложения в Xcode

Интерфейс SwiftUI использует систему представлений, отличную от постепенно отменяемого интерфейса StoryBoard. В результате в структуре вашего проекта будет отсутствовать файл AppDelegate.swift. Вам необходимо создать этот файл, поскольку он понадобится вам далее в руководстве.

Создайте файл AppDelegate.swift и импортируйте в него следующий код:

import SwiftUI

class AppDelegate: NSObject, UIApplicationDelegate {
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        return true 
    }
    
}

Теперь внутри App в корневом файле проекта скопируйте и вставьте следующий код в верхней части:

@UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate

Теперь вы готовы к установке Parse SDK. Вы установите его с помощью CocoaPods, менеджера зависимостей с открытым исходным кодом для проектов Xcode. Если вы еще не установили CocoaPods, перейдите к его установке.

Сначала инициализируйте Podfile для вашего проекта, выполнив команду pods init в терминале в каталоге проекта.

Откройте сгенерированный Podfile в Xcode и укажите Parse SDK.

Ваш подфайл должен выглядеть примерно так:

# Uncomment the next line to define a global platform for your project
#platform :ios, '13.0'

target 'ParseiOS-app' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for ParseiOS-app
  pod 'Parse'
  
end

Затем вы можете установить Parse SDK в свой проект с указанной зависимостью Parse в Podfile.

Выполните следующую команду в терминале:

pod install

После установки стручков ваш проект будет перестроен в виде нового файла рабочего пространства с расширением .xcworkspace. С этого момента вы будете работать с перестроенным рабочим пространством.

Вы успешно установили Parse SDK в свой проект.

Вы можете столкнуться с ошибкой совместимости симулятора с версией iOS после запуска установки pod. Если это произойдет, измените свой Podfile, чтобы включить это в конце:

post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
      end
    end
  end
end

Этот фрагмент кода представляет собой пост-инсталляционный хук для вашего Podfile, который позволяет вам изменять настройки сборки вашего проекта Xcode после того, как CocoaPods закончил установку подкадов.

Этот конкретный постинсталлятор устанавливает минимальную целевую версию развертывания для iPhone OS на 12.0. Вы можете изменить его в любое время, назначив новую версию в ['IPHONEOS_DEPLOYMENT_TARGET'].

Теперь снова установите стручки:

pod install

Чтобы завершить подключение приложения для iOS, вам нужно связать App ID и Client Key приложения Back4App. Для этого перейдите в Настройки приложения, расположенные на приборной панели, и перейдите в Настройки сервера > Настройки ядра.

В Core Settings вы должны найти App id и Client Key, сгенерированные лично для вашего бэкенда Back4App. Скопируйте и сохраните эти ключи.

💡 Примечание: Ключи, показанные на изображении выше, предназначены для тестового приложения, созданного для этого руководства. Обязательно скопируйте свои собственные ключи, так как приведенные выше ключи не подойдут для вашего приложения.

Далее откройте файл AppDelegate.swift и измените существующий код внутри функции didFinishLaunchingWithOptions.

Ваша функция должна выглядеть следующим образом:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        print("app launched!")

        let configuration = ParseClientConfiguration {
    $0.applicationId = "PASTE_YOUR_APPLICATION_ID_HERE"
    $0.clientKey = "PASTE_YOUR_CLIENT_ID_HERE"
    $0.server = "<https://parseapi.back4app.com>"
}
Parse.initialize(with: configuration))

        return true
    }

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

Затем следует импортировать Parse SDK в этот файл, чтобы убрать все ошибки "модуль не найден":

import Parse

Теперь ваше приложение успешно подключено к Back4App!

Шаг 4: Протестируйте ваш бэкэнд

В этом разделе вы протестируете свое приложение для iOS, чтобы убедиться, что оно может взаимодействовать с сервером Back4App и созданным вами приложением.

Вы будете тестировать CRUD-операции и хранить данные с помощью Parse SDK.

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

Для хранения данных на бэкенде вы создадите объект класса в Back4app. По умолчанию новый класс будет иметь схему с тремя полями: “objectId”, “createdAt” и “updatedAt”. Вы можете добавить новые поля и строки данных.

Вы будете создавать новое поле в приложении для iOS и считывать данные, хранящиеся в созданном вами классе.

Во-первых, в файле ContentView.swift импортируйте Parse SDK прямо под SwiftUI:

import SwiftUI
import Parse

Чтобы проверить, что ваше приложение может взаимодействовать с бэкендом, вы создадите пользовательский интерфейс для ввода текста оценки и ее сохранения на бэкенде. Приложение также сможет обращаться к бэкенду, запрашивать данные из вашего класса и отображать сохраненные оценки.

В верхней части структуры View в файле ContentView.swift создайте следующие свойства с изменяемым состоянием:

@State private var newScore: Int = ""
@State private var scores: [PFObject] = []

Эти свойства состояния будут вызывать обновление представления при изменении их значений. Первое объявляет свойство состояния newScore типа String. Оно представляет собой входное значение, введенное пользователем для новой оценки. Оно инициализируется пустой строкой "".

Во втором объявляется свойство состояния scores типа [PFObject], которое представляет собой массив экземпляров PFObject. Это будет представлять оценки, полученные из бэкенда.

Класс PFObject – это объект класса, предоставляемый Parse-SDK-iOS, который может хранить данные. Он позволяет определять пользовательские свойства и значения для объектов, которые затем могут быть сохранены в бэкенде.

Далее, внутри элемента VStack добавьте следующий фрагмент кода:

VStack {
  TextField("EnterScore", text: $newScore)
    .textFieldStyle(RoundedBorderTextFieldStyle())
    .padding()
  Button("Save Scores") {
    saveScore()
  }

  List(scores, id: \\.objectId) { score in
    Text(score["score"] as? String ?? "")
  }
}
.padding()
.onAppear {
  fetchScores()
}

У вас есть текстовое поле TextField, в которое пользователи будут вводить оценку. Параметр text привязан к переменной состояния newScore, что означает, что любые изменения в текстовом поле будут отражаться в переменной newScore.

Далее находится кнопка “Сохранить баллы”, при нажатии на которую запускается функция saveScore().

Компонент List отображает баллы, полученные из бэкэнда. Для заполнения списка используется массив scores, а параметр id задает уникальный идентификатор для каждого элемента. Внутри списка есть представление Text, которое отображает значение оценки в виде строки.

Вы используете опциональную цепочку и оператор nil-coalescing (??) для обработки случаев, когда оценка недоступна или имеет другой тип.

Наконец, модификатор onAppear используется для запуска функции fetchScores() при появлении представления VStack.

На этом этапе вы должны получить ошибку о том, что saveScores() и fetchScores() не могут быть найдены.

Далее вы создадите эти функции. Эти функции будут обрабатывать запись, сохранение данных и получение этих сохраненных данных, соответственно, из вашего связанного внутреннего приложения Back4app.

Используйте вызов метода .save() или saveInBackground(), чтобы сохранить переменную newScore в бэкенде:

func saveScore() {
  let score = PFObject(className: "GameScore")
  score["score"] = newScore

  score.saveInBackground { success, error in
    if let error = error {
      print("Error saving score: \\(error.localizedDescription)")
    } else {
      print("Score saved sucessfully: \\(String(describing: score.objectId))")
      newScore = ""
      fetchScores()
    }

  }
}

Сначала вы создаете новый экземпляр PFObject с именем класса “GameScore”. Этот объект представляет собой новую запись в базе данных бэкэнда. В следующей строке вы устанавливаете свойство “score” объекта в значение, сохраненное в newScore.

Затем вы вызываете метод saveInBackground для объекта score. Использование saveInBackground запустит асинхронную операцию сохранения, выполняемую в фоновой очереди. Внутри закрытия завершения вы проверяете, не произошла ли ошибка во время операции сохранения, и обрабатываете ее.

После успешного сохранения результата вы сбрасываете переменную состояния newScore в пустую строку, чтобы очистить текстовое поле. Затем вызовите функцию fetchScores(), чтобы обновить список оценок.

Внутри функции fetchScores() вы будете использовать PFQuery от Parse для выполнения запросов к данным бэкенда и получения объектов из определенного класса. В данном случае этим классом является класс GameScore:

func fetchScores() {
  let query = PFQuery(className: "GameScore")
  query.findObjectsInBackground { objects, error in
    if let error = error {
      print("Error fetching scores: \\(error.localizedDescription)")
    } else if let objects = objects {
      scores = objects
    }

  }
}

Здесь вы вызываете метод findObjectsInBackground на объекте запроса, чтобы инициировать асинхронную операцию выборки. Внутри закрытия завершения вы можете обработать результаты запроса.

Если во время операции выборки произошла ошибка, вы выводите сообщение об ошибке. В противном случае, если выборка прошла успешно и объекты были возвращены, вы обновляете переменную состояния scores полученными объектами. Эти объекты представляют собой баллы, полученные из бэкенда.

Когда вы запустите приложение, введете новый счет и нажмете кнопку Save Scores, приложение отправит и сохранит ваше новое значение счета в бэкэнд и получит все сохраненные показатели. Затем оно должно отобразить список оценок, как показано на рисунке ниже.

Моделирование приложений
Моделирование приложений

Обратите внимание, как оценки соответствуют значениям баллов в бэкенде.

Back4app Backend

Это подтверждает, что тест пройден, и вы успешно записываете и читаете данные из бэкенда Back4App.

Теперь вы знаете, как создать бэкэнд для мобильных приложений iOS с помощью Back4App и языка программирования Swift.


Leave a reply

Your email address will not be published.