Вступление

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

Наш сценарий

В этом руководстве мы попытаемся увидеть, как отправлять уведомления между разными клиентами с помощью Firebase Cloud Messaging, Firebase Cloud Function и Firebase Firestore на основе сценария, описанного на изображении ниже.

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

Обзор служб Firebase, которые мы собираемся использовать

  1. Firebase Firestore

Cloud Firestore - это гибкая масштабируемая база данных для разработки мобильных, веб-приложений и серверов с помощью Firebase и Google Cloud Platform. Как и Firebase Realtime Database, он поддерживает синхронизацию ваших данных между клиентскими приложениями с помощью слушателей в реальном времени и предлагает автономную поддержку для мобильных устройств и Интернета, чтобы вы могли создавать адаптивные приложения, которые работают независимо от задержки в сети или подключения к Интернету. Cloud Firestore также предлагает бесшовную интеграцию с другими продуктами Firebase и Google Cloud Platform, включая Cloud Functions.

В нашем случае мы собираемся использовать Firebase Firestore для хранения информации о пользователе и его подписчиках.

2. Облачные функции для Firebase

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

Облачные функции для Firebase позволяют автоматически запускать внутренний код в ответ на события, вызванные функциями Firebase и запросами HTTPS. Ваш код хранится в облаке Google и работает в управляемой среде. Нет необходимости управлять собственными серверами и масштабировать их.

3. Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) - это кроссплатформенное решение для обмена сообщениями, которое позволяет надежно доставлять сообщения бесплатно.

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

4. Облачное хранилище Firebase

Облачное хранилище для Firebase позволяет загружать и обмениваться пользовательским контентом, таким как изображения и видео, что позволяет встраивать мультимедийный контент в свои приложения. Ваши данные хранятся в корзине Google Cloud Storage, решении для хранения объектов в масштабе эксабайта с высокой доступностью и глобальной избыточностью. Облачное хранилище позволяет безопасно загружать эти файлы прямо с мобильных устройств и веб-браузеров, с легкостью обрабатывая нестабильные сети.

Создайте новый проект в студии Android и определите службы firebase, которые вы собираетесь использовать.

Я полагаю, что вы уже знаете, как создать новый проект с помощью Android Studio, но я собираюсь показать вам, как подключить свой проект к Firebase с помощью Android Studio.

После инициализации вашего проекта найдите меню "Инструменты" и выберите опцию Firebase.

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

Подключение Android Studio к Firebase и добавление зависимостей для сервисов firebase, которые вы собираетесь использовать в своем проекте

На этом этапе, я полагаю, вы увидели все возможности, которые дает вам firebase, поэтому мы собираемся добавить зависимости служб Firebase, которые мы собираемся использовать в нашем проекте после подключения Android Studio к консоли Firebase.

Эта операция откроет ваш браузер по умолчанию и спросит вас, хотите ли вы разрешить Android-студии иметь доступ к вашей консоли Firebase.

Когда Android Studio получит доступ к вашей консоли Firebase, у вас будет две возможности: создать новый проект Firebase в консоли Firebase или использовать существующий проект Firebase. В нашем случае мы собираемся создать новый проект, и Android Studio автоматически загрузит файл, содержащий информацию, которая позволит нашему приложению напрямую взаимодействовать с Firebase Console.

После этого вы увидите, что Android Studio подключена к Firebase Console, и пришло время добавить зависимости Firebase в приложение, выбрав второй вариант, в нашем случае это «Добавить FCM в ваше приложение». Этот процесс модифицирует файл build.gradle, добавляя зависимости Firebase для FCM в приложение, и повторяет эту операцию для всех служб Firebase, которые вы хотите иметь в своем проекте.

Создание модели, представляющей пользователя в нашем приложении

Как видите, все свойства в модели по умолчанию. Таким образом, мы можем создать экземпляр User, используя конструктор по умолчанию. Поскольку вы хотите сохранить эту модель в Firebase Firestore, необходимо обязательно определить конструктор по умолчанию.

Аннотация ServerTimestamp, примененная к полю, позволит нашей модели использовать дату сервера, если свойство createAt имеет значение null.

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

Перед использованием аннотации Parcelize необходимо активировать расширение Android в файле build.gradle (Module: app).

Правила безопасности

Запись и чтение базы данных (Firebase Firestore) обусловлены определенными правилами, т.е. е. когда проект создается в консоли Firebase, ни одно приложение не может делать записи.

Правила безопасности обеспечивают контроль доступа и проверку данных в простом, но выразительном формате. Чтобы создать системы доступа на основе пользователей и ролей, обеспечивающие безопасность данных пользователей, вам необходимо использовать Firebase Authentication с правилами безопасности Cloud Firestore.

Как изменить правила безопасности firebase firestore?

  1. Зайдите в консоль firebase
  2. Выберите интересующий проект
  3. Нажмите на опцию «база данных» и выберите Firebase Firestore.
  4. Нажмите на опцию «Правила» (это будет зависеть от языка вашего ПК)

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

Получение данных из Firestore

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

Модель представления будет нести ответственность за получение данных (пользователей), UserViewModel имеет в основном два метода:

Первый метод (fetchData) отвечает за получение данных из Firebase Firestore и сохранение результата в LiveData.

Второй метод (followUser) добавляет

Ссылка