Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Serverless приложения с облачными функциями Firebase

by
Difficulty:IntermediateLength:MediumLanguages:

Russian (Pусский) translation by Masha Kolesnikova (you can also view the original English article)

Цель Firebase - помочь разработчикам создавать самые лучшие приложения и превращать их в успешные предприятия. Позаботившись о поддержке вашего приложения или инфраструктуры, Firebase позволяет сосредоточиться на решении проблем для ваших пользователей. Одной из новых интересных функций, анонсированных на конференции Google Cloud Next '17 в марте для Firebase, были облачные функции. В этом уроке вы узнаете об этой новой функции, создав простое приложение для Android с ней.

Что такое облачные функции Firebase?

Облачные функции Firebase запускаются в гостевой, приватной и масштабируемой среде Node.js, где вы можете выполнять JavaScript-код. Вы просто создаете реагирующие функции, которые запускаются всякий раз, когда происходит событие. Облачные функции доступны как для Google Cloud Platform, так и для Firebase (они были созданы поверх облачных функций Google).

На данный момент функции поддерживают следующие триггеры, которые вы можете прослушивать и реагировать на них:

  • Триггеры базы данных реального времени: запускать функцию, когда происходит событие записи в базу данных по определенному пути.
  • Триггеры аутентификации: запускать функцию при создании нового пользователя или при удалении пользователя.
  • Триггеры Google Analytics: запускать функцию, когда регистрируется новое событие преобразования.
  • Триггеры облачного хранения: функция может быть запущена, когда есть какие-либо изменения в хранилище, такие как загрузка или обновление файла или папки или удаление их.
  • Cloud Pub / Sub Triggers: функция срабатывает при получении нового сообщения в топике Google Cloud Pub/Sub.
  • HTTPS Triggers: срабатывает, когда запрос делается на определенный ендпоинт.

Итак, зачем использовать облачные функции?

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

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

В этом уроке вы узнаете, как использовать триггеры базы данных реального времени, которые будут срабатывать при возникновении события записи базы данных. Затем мы увидим, как использовать службу Firebase Cloud Messaging для отправки уведомлений устройствам, подписанным на определенный топик. Мы создадим простое приложение под названием Tutsplus Alerts, которое будет отправлять уведомления подписчикам темы «android» всякий раз, когда доступна новая статья.

Предпосылки

Чтобы следовать этому руководству, вы должны быть знакомы с:

И вы должны иметь Node.js, установленный на вашем компьютере.

Ознакомьтесь с приведенными ниже учебными пособиями на Envato Tuts +, если вам нужна помощь в работе с Firebase:

1. Создаем облачную функцию Firebase

Установка командной строки Firebase

Теперь, давайте загрузим Cloud Functions.

Чтобы начать использовать Cloud-функции, нам нужен Firebase CLI (интерфейс командной строки), установленный с npm. Если у вас уже установлен node на вашем компьютере, вы можете установить Cloud Functions с помощью следующей команды:

Эта команда установит CLI Firebase глобально вместе со всеми необходимыми зависимостями Node.js.

Инициализация проекта

Для инициализации вашего проекта нужно:

  1. Выполнить firebase login для входа в Firebase через браузер и проверки подлинности инструмента CLI.
  2. Создать новый каталог проекта с именем tutsplus-alerts.
  3. Наконец, запустите firebase init functions из этого нового каталога. Этот инструмент дает вам возможность устанавливать зависимости с NPM. Можно и отказаться, если вы хотите управлять зависимостями по-другому.

После успешного завершения этих команд структура вашего проекта будет выглядеть следующим образом:

  • .firebaserc: скрытый файл, который поможет вам быстро переключаться между проектами с помощью команды firebase use.
  • firebase.json: описывает свойства вашего проекта.
  • functions/: эта папка содержит весь код для ваших функций.
  • functions/package.json: файл пакета NPM, описывающий ваши облачные функции.
  • functions/index.js: основной источник для вашего кода облачных функций.
  • functions/node_modules/: папка, в которой установлены все ваши зависимости NPM.

Импорт необходимых модулей и инициализация приложения

Чтобы разработать наше простое приложение Tutsplus Alerts, нам нужны только два модуля node: Cloud Functions и Admin SDK modules (эти модули уже установлены для нас). Поэтому перейдите в index.js и добавьте эти модули, а затем инициализируйте экземпляр приложения администратора.

Код облачной функции

Теперь, когда необходимые модули для нашего проекта были импортированы и инициализированы, давайте напишем нашу облачную функцию в файле index.js. Как уже говорилось ранее, мы собираемся написать функцию, которая будет запущена, всякий раз когда событие onWrite() произойдет в нашей базе данных реального времени Firebase, а затем в ответ отправит уведомление на устройство.

В приведенном выше коде мы слушаем путь базы данных /articles/{articleId}, где {articleId} представляет идентификатор статьи, которая была успешно записана. Теперь мы знаем о данных, которые были написаны. Чтобы получить их, мы используем event.data, который является статическим интерфейсом DeltaSnapshot.

Затем добавьте данные из этого snapshot в payload сообщения и отправьте его в тему «android». Асинхронный код упрощается обещаниями JavaScript.

Обратите внимание, что в приведенном выше коде мы записали данные на консоль с помощью функции console.log(), которая поможет нам в отладке и мониторинге. Мы можем просмотреть этот лог либо в нашей панели Firebase, либо через командную строку с помощью:

Имейте в виду, что, поскольку это выполняется на Node.js, вы можете установить другие модули из NPM. Вы можете также писать на JavaScript ES6 или TypeScript вместо обычного JavaScript.

Развертывание облачной функции

Развернем нашу Cloud Function. Запустите эту команду для развертывания:

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

2. Создайте приложение TutsplusAlerts

Создание проекта Android Studio

Сначала запустите Android Studio и создайте новый проект «TutsplusAlerts» с пустым действием MainActivity.

Android Studio create new project

Чтобы следовать дальше, убедитесь, что вы включили Firebase в свое приложение.

Добавить зависимость базы данных в реальном времени

Добавьте следующую зависимость в файл build.gradle:

Убедитесь, что вы синхронизировали свой проект после его добавления.

Создаем модель

Давайте смоделируем объект статьи, который будет сохраняться в нашей базе данных в реальном времени.

Создание макета XML

Наш XML-макет для основной Activity будет иметь только два EditTexts и кнопку, которая отправит новую статью.

Запись в базу данных реального времени

Теперь мы собираемся сделать запись в базу по адресу /articles/.

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

Вы можете узнать больше о правилах безопасности Firebase в моей статье здесь, в Envato Tuts +.

Запуск приложения

На этом этапе мы можем протестировать приложение и проверить, была ли наша Cloud Function успешно выполнена. Введите название и автора, а затем нажмите кнопку отправки. После этого зайдите на панель инструментов «Функции» и просмотрите логи. Должен появится наш новый лог.

Cloud Functions Dashboard

Из логов, приведенных выше, мы видим, что мы успешно выполнили нашу облачную функцию и отправили сообщение с полезной payload на устройства, подписанные на тему «android». В следующем разделе мы будем использовать Firebase Cloud Messaging, чтобы устройства могли подписаться на тему, а затем обработать входящее сообщение с сервера, чтобы показать уведомление.

3. Добавляем поддержку Firebase Cloud Messaging

Включить зависимость

Включите зависимость Firebase Messaging в файл build.gradle и затем выполните синхронизацию вашего проекта:

Обработка сообщений

Нам нужно создать службу, которая наследуется от FirebaseMessagingService и переопределяет обратные вызовы onMessageReceived.

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

Обновление файла манифеста

Обновите файл манифеста, включая службу, созданную ранее в теге <application>.

Подписываемся на топик

Наконец, нам нужно подписаться на тему «android», чтобы устройство могло получать и обрабатывать сообщения, отправленные на эту тему.

Запуск приложения

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

final app screenshots

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

Вывод

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

Чтобы узнать больше о облачных функциях Firebase, обратитесь к официальной документации. А пока ознакомьтесь с некоторыми нашими другими курсами и учебными пособиями по разработке приложений для Android!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.