Добавьте функциональность базы данных в свое приложение для Android

В предыдущей статье мы обсуждали, как создать приложение для Android с двумя наиболее важными строительными блоками компонентов архитектуры Android: LiveData и ViewModel. Это продолжение этого руководства.

Когда у нас будет приложение с чистой архитектурой, мы будем настраивать Firebase Firestore для компонентов архитектуры Android, чтобы обновлять данные в режиме реального времени и максимально использовать возможности LiveData и ViewModel в Android.

Запуск

Мы начнем это руководство с приложения, которое мы создали для предыдущего урока, My Shopping List. Скачайте стартовый проект с моего сайта.

Откройте приложение в Android Studio и дождитесь завершения синхронизации Gradle. Запустите приложение, и вы должны увидеть приложение со списком покупок:

Создание проекта в консоли Firebase

Первый шаг - создать консольный проект Firebase. Перейдите на главную страницу Firebase Console. На этом экране вы получите один из двух макетов:

  1. Если вы никогда раньше не использовали Firebase Console, вам будет предложено приветственное сообщение и приглашение создать проект.

2. Если у вас есть другие проекты, вы увидите их список и белую карточку для добавления проекта.

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

Нажмите «Продолжить», и на следующем шаге вас спросят, хотите ли вы включить Google Analytics. Это не обязательно для Firestore, но вы можете включить его по другим причинам:

Нажмите «Создать проект», и вы увидите экран загрузки (Изображение 6). На это уйдет немного времени, так что не волнуйтесь.

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

Нажмите кнопку «Продолжить», и вы попадете на главный экран проекта MyShoppingList.

Важно понимать, что этот проект будет работать на многих платформах, не только на Android. Если вы собираетесь интегрировать Firestore в приложение iOS или веб-проект, вы должны использовать тот же проект, и это также позволит вам совместно использовать базу данных на разных платформах.

Добавление Firebase в приложение для Android

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

На первом этапе Firebase запросит данные вашего приложения. Добавьте следующее:

  1. Название пакета: com.evanamargain.android.myshoppinglist. Это должно быть то же имя пакета, что и в вашем приложении. Если вы не уверены и не используете демонстрационный проект, перейдите в приложение ›манифесты› AndroidManifest.xml. Пакет будет в первых нескольких строках файла.
  2. Псевдоним: Мой список покупок. Это может быть любой ник, который поможет вам запомнить название приложения. Возможно, вы захотите добавить суффикс «Android», если хотите отличить его от другого приложения.
  3. Сертификат SHA-1: он может быть пустым, так как вы не будете использовать его в этом руководстве.

После ввода данных вы получите файл JSON с именем google-services.json. На экране есть инструкции по интеграции его в приложение, но я объясню ниже, если это неясно.

Перейдите в Android Studio, где у вас открыт проект, и переключите представление на левой панели. Ваш проект, скорее всего, будет в режиме «Android», и вы получите раскрывающийся список с параметрами просмотра, как на изображении 12 ниже:

Когда вы перейдете в режим просмотра Project, вы увидите дерево файлов, как на изображении ниже. Загрузите файл из Firebase Console в любое место на вашем компьютере, а затем перетащите его в приложение MyShoppingList ›.

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

Как только вы перейдете в режим Android, откройте Gradle Scripts ›build.gradle (Project: MyShoppingList). Добавьте этот код:

classpath 'com.google.gms:google-services:4.3.3'

В той же папке open Build.gradle (Module: app) и добавьте следующий код:

apply plugin: 'com.google.gms.google-services' 
... 
dependencies { 
  ...
  // In case you activated Google Analytics
  // Add the Firebase SDK for Google Analytics
  implementation 'com.google.firebase:firebase-analytics:17.2.2'
  // Add Firestore dependency
  implementation 'com.google.firebase:firebase-firestore:21.
}

Если у вас есть сомнения относительно успешности синхронизации, взгляните на нижнюю панель. Это должно выглядеть как на изображении 16 ниже:

Завершить настройку консоли Firebase

Затем вернитесь в консоль Firebase и нажмите Далее, чтобы подтвердить, что вы добавили файл JSON и зависимости в проект. Внизу экрана будет примечание, указывающее, что Firebase проверяет подключение между вашим приложением и консолью. Скомпилируйте и запустите приложение. Он должен запуститься и выглядеть так же, как в начале руководства. После этого Firebase должна подтвердить подключение и дать вам кнопку «Продолжить в консоли».

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

Настройка Firestore в Firebase Console

После того, как у вас есть проект в Firebase Console и вы подключили свое приложение к проекту, пора настроить базу данных Firestore в консоли. Найдите большую оранжевую плитку под основным экраном проекта, которая выглядит как Изображение 19 ниже:

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

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

Нажмите Далее, и вам будет предложено указать местоположение сервера. Обычно рекомендуется выбирать место, ближайшее к вам или вашим пользователям, так как это сократит время загрузки. Я думаю, что Firebase Console автоматически предлагает наиболее близкий вам.

После того, как вы нажмете «Готово», появится счетчик Provisioning Cloud Firestore (Изображение 23). Однажды на конференции Google Cloud мне сказали, что эта подготовка может занять до трех минут, если служба слишком загружена, но обычно это занимает меньше времени.

Настроить базу данных

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

Щелкните текст «+ начать коллекцию», чтобы создать свою первую коллекцию. База данных имеет многоколоночную структуру, основанную на полях коллекций ›документов›. Согласно демонстрационному приложению, мы хотим, чтобы наша коллекция называлась MyGroceries, поскольку она будет содержать все наши продукты.

Затем для документа вам также будет предложено ввести имя. Это может быть «TodaysGroceries» или дата (например, «30–2020 марта»), если вы хотите, чтобы в приложении было несколько списков.

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

  1. Item1 = строка - банан
  2. Item2 = string - арахисовое масло
  3. Item3 = строка - хлеб

Добавьте столько, сколько хотите, или просто скопируйте образцы данных, которые есть в приложении.

После того, как вы добавили все поля, ваша база данных должна выглядеть как на изображении 27 ниже:

Заключение

Вот и все! Теперь у нас есть Firebase Console и приложение Android, настроенное на использование Firestore с базой данных в нем. В следующей части мы интегрируем эту базу данных с компонентами архитектуры Android. Если вы хотите увидеть, как в итоге должен работать проект, вы можете скачать готовый проект на моем сайте.

Если у вас есть сомнения, не стесняйтесь оставлять комментарии, и я отвечу как можно скорее.

Увидимся в следующий раз!