При создании мобильных приложений стартапам часто сложно реализовать функционал вроде аутентификации и push-уведомлений: не хватает бюджета, разработка с нуля очень времязатратна и ресурсоемка.
В Firebase имеется весь инструментарий для упрощения процесса разработки с готовыми решениями аутентификации, уведомлений, баз данных реального времени. С ним стартапы сосредоточиваются на продукте, не расходуя ценные ресурсы на реализацию и поддержку серверной инфраструктуры.
Изучим применение Firebase в мобильных и веб-приложениях, аутентификацию, push-уведомления, Remote Config, аналитику и другой функционал.
Что такое Firebase?
С Firebase значительно упрощается реализация в приложении важного функционала, создавать который с нуля невероятно сложно. Это push-уведомления, аналитика и базы данных реального времени.
Чтобы реализовать на стороне клиента функционал вроде push-уведомлений, аналитики и баз данных в реальном времени, не нужно создавать и обслуживать сервер: сервисы Firebase запускаются на выделенном сервере. С Firebase нагрузка на серверную часть заметно снижается. Иногда мобильные приложения запускаются даже без развертывания собственного сервера, с использованием надежной инфраструктуры Firebase.
Взаимодействие с сервером, построение бизнес-логики и плавная интеграция с сервисами Firebase упрощаются клиентскими SDK-пакетами. А благодаря удобному интерфейсу консоли Firebase технически не подкованные участники команды, например владельцы продукта, через браузер легко управляют сервисами и отслеживают события.
Возможностями и надежностью Firebase пользуются крупные компании вроде Instacart, Block, Twitch, Accenture. Для стартапов, которые стремятся совершенствовать свои сервисы без больших затрат, Firebase привлекателен беззатратным планом. Так что не попробовать Firebase просто нет причин.
Аутентификация
Аутентификация — важный функционал большинства приложений с идентификацией пользователя. Благодаря идентификационным данным информация пользователя безопасно сохраняется приложением на сервере, а самому пользователю предоставляется персонализированный доступ ко всем его устройствам.
Простейший способ аутентификации — использовать в приложении сервисы известных платформ: Google, Meta, Twitter и других. Надежная безопасность обеспечена: эти сервисы тщательно проверены соответствующими компаниями. Кроме того, пользователям легко подтвердить свою личность действующими учетными записями, чем упрощается процесс регистрации: нет необходимости заводить новую учетку вручную.
Используя аутентификацию Firebase с ее бэкенд-сервисами и клиентскими библиотеками, в том числе простыми библиотеками пользовательского интерфейса, пользователи аутентифицируются на Android, iOS, Flutter, Web и Unity. Здесь поддерживается интеграция со службами аутентификации Google, Facebook, Apple, Twitter, GitHub, Microsoft, с ручной аутентификацией по почте и паролю, по номеру телефона. Благодаря такому широкому выбору обеспечивается беспроблемная и безопасная авторизация пользователей, независимо от платформы или метода аутентификации.
В аутентификации Firebase имеется и расширенный функционал: многофакторная аутентификация, функции блокировки, предотвращение злоупотреблений, также поддержка языка разметки декларации безопасности SAML и поставщиков OpenID Connect. Этим функционалом повышаются безопасность и гибкость в управлении проверкой подлинности пользователя. Подробнее — в официальной документации.
Облачный обмен сообщениями, push-уведомления
Push-уведомления — важный функционал привлечения пользователей мобильных приложений, мощная стратегия повышения вовлеченности активных пользователей и их удержания. Особенно кстати они приходятся для предоставления в реальном времени информации и обновлений пользовательского взаимодействия: лайков, комментариев, сообщений в чатах и подписок на мобильный сервис.
Например, push-уведомлениями пользователи оповещаются о новых сообщениях, запросах добавления в друзья или обновлениях постов, так поддерживается их вовлеченность в приложение. Эффективным использованием push-уведомлений совершенствуется взаимодействие пользователей, повышаются их активность в приложении и коэффициент удержания.
Создавать систему уведомлений с нуля очень ресурсозатратно и сложно: требуется настроить собственный облачный сервер уведомлений, реализовать механизмы синхронизации в реальном времени для получения полезной нагрузки уведомлений, обеспечить корректное «пробуждение» мобильного устройства, создать необходимые протоколы полезной нагрузки между сервером и клиентами.
В Firebase же имеется встроенное решение Firebase Cloud Messaging (далее — FCM), с которым нет необходимости создавать собственный сервер уведомлений. А еще предоставляются клиентские SDK-пакеты для мобильного приложения, которыми обеспечивается корректное получение уведомлений пользователями. Следуя исчерпывающим рекомендациям Firebase, на основе FCM в стартапах эффективно — зачастую в течение дня — реализуют сложные системы push-уведомлений.
В FCM также обеспечивается удобное пользовательское взаимодействие, так что через консоль Firebase, в основе которой — графический интерфейс, технически не подкованный персонал вроде продуктологов легко отправляет подписчикам конкретных тем сообщения с push-уведомлениями, включая полезную нагрузку данных, уведомления по расписанию и нацеливаясь на конкретных пользователей. Технических знаний при этом не требуется.
Вот общая архитектура FCM согласно официальной документации:
Принцип работы этой архитектуры:
- На консоли FCM или собственном бэкенд-сервисе создается запрос уведомления. Бэкенд-сервис работает в доверенной серверной среде и поддерживает SDK-пакет администратора Firebase либо серверный протокол FCM.
- Серверная обработка FCM: серверной частью FCM принимается запрос сообщений, выполняется их распределение по темам, генерируются метаданные, в том числе идентификатор сообщений.
- Сообщение направляется в целевое устройство транспортным уровнем на уровне платформы. Там обрабатывается доставка сообщения, при необходимости применяются конфигурации целевой платформы.
- SDK-пакетом FCM на устройстве пользователя выполняется отображение уведомлений или обработка сообщений на основе приоритетного/фонового состояния приложения и любой соответствующей логики. SDK-пакетом обеспечивается корректное отображение или обработка уведомлений в приложении.
Подробнее о FCM — в официальной документации.
Firebase Remote Config
В разработке мобильных приложений одна из проблем — необходимость отправлять обновления для любых изменений в приложении: изменений макетов пользовательского интерфейса, включения или отключения конкретных функций или других корректировок. Обычно это связано с доставкой нового пакета в Google Play Store или Apple App Store. Чтобы увидеть эти изменения, пользователям необходимо вручную обновить приложение.
Как избежать вызванного простыми изменениями, сложного процесса обновления приложения? Применять Firebase Remote Config. Это облачный сервис для изменения поведения и внешнего вида приложения без загрузки обновления.
При обновлении в консоли Firebase каких-либо значений — ключей и значений параметров — в приложении или серверной реализации определяется, когда применятся эти обновления. В приложении часто — раз в час примерно — проверяется наличие обновлений, и они применяются с минимальным воздействием на производительность. Руководствуясь своими стратегиями, технически не подкованный персонал также контролирует эти значения на консоли Firebase с графическим интерфейсом:
С Firebase Remote Config получается включать/отключать функции без обновления приложения, экспериментируя с различными конфигурациями, управляя сезонными событиями или вознаграждениями, легко активируя конкретный функционал в любых часовых поясах.
Эффективным применением Firebase Remote Config значительно повышается гибкость приложения:
- Снижается риск. Для целевых пользователей постепенно выкатываются функции и при необходимости экстренно откатываются.
- Повышается вовлеченность пользователей. По мере освоения приложения быстро настраивается пользовательское взаимодействие. Например, обновляются баннеры, предлагаются поощрения тем, кто соответствует определенным свойствам пользователя Google Analytics, или динамически регулируются объемы продаж для разных групп пользователей.
- Растет продуктивность разработчиков. Чтобы предоставить командам разработки и тестирования функциональность и скрыть ее от пользователей на продакшене, параметры Remote Config используются как флаги функций. Этим сокращаются зависимости компоновки, оптимизируется процесс разработки.
Подробнее о Firebase Remote Config — здесь.
База данных в реальном времени
При разработке мобильных приложений часто приходится сохранять пользовательские данные или обеспечивать взаимодействие пользователей. В таких случаях для взаимодействия с мобильными приложениями необходимо установить бэкенд-сервер и управлять им. Но для большинства стартапов, где обычно очень мало разработчиков, создавать и обслуживать пользовательский сервер тяжело и затратно.
Хотите получать реакцию рынка, создав простой сервер? Или просто сэкономить на создании бэкенд-сервера в одиночку? Оптимальный вариант: Firebase Realtime Database. Это идеальное решение для быстрой настройки и управления бэкендом. Забудьте о сложности и затратах, связанных с созданием серверной инфраструктуры с нуля, и сконцентрируйтесь на разработке мобильного приложения.
В Firebase Realtime Database данные всех клиентов сохраняются и синхронизируются с помощью облачной нереляционной базы данных в режиме реального времени, оставаясь доступными даже при отключении приложения. Это очень удобный вариант, если не требуются сложные SQL-запросы или интенсивные вычислительные операции.
Основные преимущества Firebase Realtime Database:
- В отличие от обычных HTTP-запросов, в Firebase Realtime Database используется синхронизация данных реального времени, любые изменения которых мгновенно, за миллисекунды, отображаются во всех подключенных устройствах. Этим функционалом обеспечивается иммерсивное взаимодействие без необходимости управления сетевым кодом.
- Автономная сохраняемость. Приложения Firebase остаются респонсивыми даже в офлайне. SDK-пакетом Realtime Database данные длительно сохраняются на диске устройства. Когда подключение восстанавливается, клиентским устройством при синхронизации с текущим состоянием сервера получаются все пропущенные обновления. Этим обеспечивается беспроблемное пользовательское взаимодействие независимо от условий сети.
Подробнее о Firebase Realtime Database — в официальной документации.
Распространение приложений
Любому разработчику мобильных приложений хоть раз да приходилось передавать для тестирования продуктологу или специалисту по контролю качества файл в формате APK, AAB или IPA. После этого команда удаляет предыдущую версию и устанавливает новую.
Хотя цель достигается и файл приложения передается команде для тестирования, у этого примитивного подхода имеются недостатки:
- Проблемы масштабируемости. Если команда большая и приложение много кому нужно протестировать, файл необходимо раздать каждому.
- Контроль версий. Отследить, какие версии переданы, бывает непросто, это чревато путаницей и несоответствиями.
- Трудности с установкой. Участникам команды приходится загружать файл приложения вручную, переносить его на локальное устройство, удалять предыдущую версию, затем устанавливать новую. Это процесс времязатратный и неудобный.
В Firebase для этого сценария имеется отличное решение, которым процесс упрощается: приложения распространяются среди доверенных тестировщиков. На консоли Firebase в тестировщики добавляются участники команды и, получив по почте уведомление, устанавливают опубликованное приложение через Firebase Tester App. Так распространение приложений упрощается, и последняя версия становится доступной для тестирования всеми заинтересованными в этом.
В Firebase App Distribution разработчикам также предлагаются очень полезные плагины, при помощи которых файлы приложений в процессе сборки автоматически распространяются напрямую из терминала. Для Android в Firebase имеется плагин Gradle, для iOS — Fastlane.
Подробнее о Firebase App Distribution — здесь.
Crashlytics
Сбои — важнейшая проблема на пути совершенствования пользовательского взаимодействия. Из-за сбоя мобильного устройства не только закрывается приложение, но и теряются все текущие состояния и рабочие процессы. Это чревато сильным недовольством, низкими оценками и оттоком пользователей.
Разбираться в сбоях — важно, но диагностировать все проблемы на устройстве каждого пользователя в отдельности — нереально. Здесь пригодится Firebase Crashlytics. На устройствах пользователей этим инструментом отслеживаются сбои с представлением отчетов о них, в режиме реального времени выдаются оповещения, из большого объема данных о сбое генерируется управляемый список проблем. В Crashlytics для скорейшего выявления первопричины сбоя предоставляется контекстная информация, обозначаются его серьезность и распространенность.
На консоли Firebase представляются подробные сведения о сбое: в каком коде и конкретном устройстве обнаружились проблемы, частотность их появления.
В Android Studio имеется инструмент для отслеживания сбоев прямо в проекте. В учетной записи Firebase, интегрированной с интерактивной средой разработки, просматриваются подробные отчеты о сбоях, эффективно устраняются неполадки.
Здесь пользователи просматривают, фильтруют важные проблемы Android, переходят из трассировки стека сразу в соответствующий код. При такой интеграции с Firebase отладка внутри проекта выполняется эффективнее, проблемы устраняются быстрее. Подробнее — здесь (Eng).
Мониторинг производительности
В Firebase имеется еще один ценный инструмент — для мониторинга и отслеживания производительности всего приложения или конкретного функционала. Используя Performance Monitoring, разработчики получают представление о работе приложения в реальном мире, выявляют узкие места производительности и на основе данных дорабатывают приложение с целью совершенствования пользовательского взаимодействия.
Этим инструментом в реальном времени мониторятся различные аспекты производительности приложения: сетевое подключение, загрузка больших ресурсов, визуализация сложных пользовательских интерфейсов. При просмотре отчетов производительности на консоли Firebase, чтобы повысить общую производительность приложения, выявляются узкие места и оптимизируются конкретные реализации.
Здесь автоматически замеряются время запуска приложения, сетевые HTTP-запросы, данные отрисовки экрана и многое другое. А для отслеживания производительности конкретного функционала приложения добавляется пользовательский код. Так получаются подробные сведения о конкретной функциональности и на основе собранных данных оптимизируются.
Подробнее об этом инструменте — здесь.
Расширения Firebase
В Firebase имеются дополнительные инструменты для быстрого развертывания, сборки и анализа функциональности приложений с помощью предупакованных решений. Расширения Firebase — фрагменты кода, в которых выполняются задачи, когда в приложении или проекте случаются предопределенные события. Эти фрагменты написаны с помощью облачных функций Firebase.
Обращаются к этим расширениям через Firebase Extensions Hub, там же выложены расширения для интегрирования в проект. Участвуйте в сообществе разработчиков, создавая расширения Firebase или подключая собственные SaaS-решения в рамках программного обеспечения как услуги.
Недавно в Google Cloud представили расширение Gamini Firebase для быстрого создания чат-бота с моделями Gemini, сохраняемыми и управляемыми в Cloud Firestore. Этим расширением легко реализовать систему чат-ботов с генеративным ИИ на Vertex AI.
Для создания расширений Firebase воспользуйтесь рекомендациями Authenticate with Stream Chat. Этим расширением на основе аутентификации Firebase проверяется подлинность пользовательской информации. Клиенты SDK-пакета Stream с помощью социальной идентификации, проверки номера телефона, аутентификации по почте и паролю, предоставляемым в Firebase, легко интегрируют аутентификации Stream и Firebase. Подробнее — здесь.
Заключение
Мы изучили инструменты Firebase для повышения производительности бизнеса и приложений. Firebase нужен большинству компаний, которые занимаются мобильными приложеними. Особенно стартапам, ведь им часто не хватает ресурсов для создания сложных систем с нуля, да и бюджет на разработку серверной инфраструктуры, адаптированной под мобильные устройства, у них ограничен.
Читайте также:
- Как использовать управляемые Gradle устройства с собственными девайсами
- Уведомления о контактах
- Секреты в Android. Часть 2
Читайте нас в Telegram, VK и Дзен
Перевод статьи Jaewoong Eum: Best Firebase Tools for Your Mobile Application