Вступление
Большинство приложений, которые вам придется разрабатывать, должны будут уведомлять пользователей, когда происходит определенное событие.
Наш сценарий
В этом руководстве мы попытаемся увидеть, как отправлять уведомления между разными клиентами с помощью Firebase Cloud Messaging, Firebase Cloud Function и Firebase Firestore на основе сценария, описанного на изображении ниже.
Мы собираемся создать небольшое приложение, которое будет уведомлять пользователя о новых подписчиках.
Обзор служб Firebase, которые мы собираемся использовать
- 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?
- Зайдите в консоль firebase
- Выберите интересующий проект
- Нажмите на опцию «база данных» и выберите Firebase Firestore.
- Нажмите на опцию «Правила» (это будет зависеть от языка вашего ПК)
В нашем случае только подключенным пользователям будет разрешено манипулировать данными в нашей базе данных.
Получение данных из Firestore
Наша база данных в настоящее время пуста, но это не мешает нам настроить код, который поможет нам читать содержимое базы данных.
Модель представления будет нести ответственность за получение данных (пользователей), UserViewModel имеет в основном два метода:
Первый метод (fetchData) отвечает за получение данных из Firebase Firestore и сохранение результата в LiveData.
Второй метод (followUser) добавляет