firebase для мобильного приложения

Используем Firebase в качестве хранилища изображений для Android-приложения

3c48e7f46005e2e4ad11f7492917da0b

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

Firebase

Firebase — это платформа для разработки мобильных и веб-приложений, разработанная компанией Firebase в 2011 году и приобретённая Google в 2014 году. По состоянию на октябрь 2018 года платформа Firebase насчитывает 18 продуктов, которые используются в 1,5 миллионах приложений. Она помогает быстро разрабатывать высококачественные приложения, расширять базу пользователей и зарабатывать больше денег.

Glide

Glide — это библиотека для загрузки изображений в Android-приложениях, разработанная компанией Bump Tech и рекомендованная Google. Она используется во многих проектах Google с открытым исходным кодом, включая официальное приложение Google I/O 2014. Glide поддерживает загрузку, декодирование и отображение изображений, видеоизображений и анимированных GIF-файлов.

Настройка Firebase

Давайте настроим Firebase для нашего Android-проекта.

Нажмите «Начать проект».

Нажмите «Добавить проект».

Дайте своему проекту имя.

image loader

Нажмите кнопку «Создать проект» внизу.

Нажмите на значок Android.

image loader

2c08f8a05f8654af60250e7964c1389b

Добавьте ключ SHA1 и нажмите «Зарегистрировать приложение».

Нажмите кнопку «Скачать google-services.json», чтобы загрузить этот файл.

Затем добавьте google-services.json в папку app вашего проекта.

image loader

Так это должно выглядеть:

image loader

Так это должно выглядеть:

image loader

Так это должно выглядеть:

ecd1a59aebcb21ec9472d97dfd6c7e2f

Теперь нажмите на База данных → Правила. Добавьте следующие строки:

Нажмите на Хранилище → Правила. Добавьте следующие строки:

7ec6c5740c87745e9a532130306dfa40

image loader

Activity_main.xml

Создайте ImageView, в котором будет отображаться изображение.

MainActivity.java

Поздравляем! Теперь вы можете запустить ваше приложение.

После запуска приложения вы увидите ваше изображение.

1187ff0a9d4debf2f781c9e59db026e4

Весь код вы можете скачать с нашего репозитория на GitHub.

Источник

Add Firebase to your Android project

Prerequisites

Install or update Android Studio to its latest version.

Make sure that your project meets these requirements:

Set up a physical device or use an emulator to run your app.
Note that Firebase SDKs with a dependency on Google Play services require the device or emulator to have Google Play services installed.

Sign into Firebase using your Google account.

If you don’t already have an Android project and just want to try out a Firebase product, you can download one of our quickstart samples.

You can connect your Android app to Firebase using one of the following options:

Option 1: Add Firebase using the Firebase console

Adding Firebase to your app involves tasks both in the Firebase console and in your open Android project (for example, you download Firebase config files from the console, then move them into your Android project).

Step 1: Create a Firebase project

Before you can add Firebase to your Android app, you need to create a Firebase project to connect to your Android app. Visit Understand Firebase Projects to learn more about Firebase projects.

Create a Firebase project

In the Firebase console, click Add project.

To add Firebase resources to an existing Google Cloud project, enter its project name or select it from the dropdown menu.

To create a new project, enter the desired project name. You can also optionally edit the project ID displayed below the project name.

If prompted, review and accept the Firebase terms.

Click Continue.

(Optional) Set up Google Analytics for your project, which enables you to have an optimal experience using any of the following Firebase products:

Either select an existing Google Analytics account or to create a new account.

If you create a new account, select your Analytics reporting location, then accept the data sharing settings and Google Analytics terms for your project.

Click Create project (or Add Firebase, if you’re using an existing Google Cloud project).

Firebase automatically provisions resources for your Firebase project. When the process completes, you’ll be taken to the overview page for your Firebase project in the Firebase console.

Step 2: Register your app with Firebase

To use Firebase in your Android app, you need to register your app with your Firebase project. Registering your app is often called «adding» your app to your project.

Note: Visit Understand Firebase Projects to learn more about best practices and considerations for adding apps to a Firebase project, including how to handle multiple build variants.

In the center of the project overview page, click the Android icon ( plat_android ) or Add app to launch the setup workflow.

Enter your app’s package name in the Android package name field.

What’s a package name, and where do you find it?

A package name uniquely identifies your app on the device and in the Google Play Store.

A package name is often referred to as an application ID.

Find your app’s package name in your module (app-level) Gradle file, usually app/build.gradle (example package name: com.yourcompany.yourproject ).

Be aware that the package name value is case-sensitive, and it cannot be changed for this Firebase Android app after it’s registered with your Firebase project.

(Optional) Enter other app information: App nickname and Debug signing certificate SHA-1.

How are the App nickname and the Debug signing certificate SHA-1 used within Firebase?

App nickname: An internal, convenience identifier that is only visible to you in the Firebase console

Debug signing certificate SHA-1: A SHA-1 hash is required by Firebase Authentication (when using Google Sign In or phone number sign in) and Firebase Dynamic Links.

Click Register app.

Step 3: Add a Firebase configuration file

Add the Firebase Android configuration file to your app:

Click Download google-services.json to obtain your Firebase Android config file ( ).

Move your config file into the module (app-level) directory of your app.

What do you need to know about this config file?

The Firebase config file contains unique, but non-secret identifiers for your project. To learn more about this config file, visit Understand Firebase Projects.

You can download your Firebase config file again at any time.

To enable Firebase products in your app, add the google-services plugin to your Gradle files.

In your root-level (project-level) Gradle file ( build.gradle ), add rules to include the Google Services Gradle plugin. Check that you have Google’s Maven repository, as well.

In your module (app-level) Gradle file (usually app/build.gradle ), apply the Google Services Gradle plugin:

Step 4: Add Firebase SDKs to your app

Using the Firebase Android BoM, declare the dependencies for the Firebase products that you want to use in your app. Declare them in your module (app-level) Gradle file (usually app/build.gradle ).

Analytics enabled

Kotlin+KTX

By using the Firebase Android BoM, your app will always use compatible versions of the Firebase Android libraries.

Analytics not enabled

Kotlin+KTX

By using the Firebase Android BoM, your app will always use compatible versions of the Firebase Android libraries.

Sync your app to ensure that all dependencies have the necessary versions.

Getting a build failure about invoke-custom support and enabling desugaring? Here’s how to fix it.

Gradle builds that use Android Gradle plugin (AGP) v4.2 or earlier need to enable Java 8 support. Otherwise, these Android projects get a build failure when adding a Firebase SDK.

To fix this build failure, you can follow one of two options:

Learn more about this build failure in this FAQ.

That’s it! You can skip ahead to check out the recommended next steps.

If you’re having trouble getting set up, though, visit the Android troubleshooting & FAQ.

Option 2: Add Firebase using the Firebase Assistant

The Firebase Assistant registers your app with a Firebase project and adds the necessary Firebase files, plugins, and dependencies to your Android project — all from within Android Studio!

Open your Android project in Android Studio, then make sure that you’re using the latest versions of Android Studio and the Firebase Assistant:

Open the Firebase Assistant: Tools > Firebase.

In the Assistant pane, choose a Firebase product to add to your app. Expand its section, then click the tutorial link (for example, ).

Click Connect to Firebase to connect your Android project with Firebase.

What does this workflow do?

This workflow automatically creates a new Firebase Android app using your app’s package name. You can create this new Firebase Android app in either an existing Firebase project or a new project.

Here are some tips about setting up your Firebase project:

Visit Understand Firebase Projects to learn more about best practices and considerations for adding apps to a Firebase project, including how to handle multiple build variants.

If you create a new project, we strongly recommend that you set up Google Analytics for your project, which enables you to have an optimal experience using many Firebase products.

This workflow also adds your Firebase project’s Android configuration file ( ) to the module (app-level) directory of your app.

Click the button to add a desired Firebase product (for example, ).

Sync your app to ensure that all dependencies have the necessary versions.

In the Assistant pane, follow the remaining setup instructions for your selected Firebase product.

Add as many other Firebase products as you’d like via the Firebase Assistant!

Are you using Kotlin?
You can use the alternative Kotlin extensions (KTX) libraries which enable you to write beautiful and idiomatic Kotlin code.

Do you want an easier way to manage library versions?
You can use the Firebase Android BoM to manage your Firebase library versions and ensure that your app is always using compatible library versions.

That’s it! Make sure to check out the recommended next steps.

If you’re having trouble getting set up, though, visit the Android troubleshooting & FAQ.

Available libraries

This section lists the Firebase products supported for Android and their Gradle dependencies. Learn more about these Firebase Android libraries:

Firebase Android SDK GitHub repo

The Firebase Android library firebase-core is no longer needed. This SDK included the Firebase SDK for Google Analytics.

Service or Product Gradle dependency Latest
version
Add Analytics?
Firebase Android BoM
(Bill of Materials)
com.google.firebase:firebase-bom

The latest Firebase BoM version contains the latest versions of each Firebase Android library. To learn which library versions are mapped to a specific BoM version, review the release notes for that BoM version.

29.0.0 AdMob com.google.android.gms:play-services-ads 20.4.0 Analytics com.google.firebase:firebase-analytics 20.0.0 App Check custom provider com.google.firebase:firebase-appcheck 16.0.0-beta03 App Check debug provider com.google.firebase:firebase-appcheck-debug 16.0.0-beta03 App Check SafetyNet provider com.google.firebase:firebase-appcheck-safetynet 16.0.0-beta03 App Distribution plugin com.google.firebase:firebase-appdistribution-gradle 2.2.0 App Indexing com.google.firebase:firebase-appindexing 20.0.0 Authentication com.google.firebase:firebase-auth 21.0.1 Cloud Firestore com.google.firebase:firebase-firestore 24.0.0 Cloud Functions for Firebase Client SDK com.google.firebase:firebase-functions 20.0.1 Cloud Messaging com.google.firebase:firebase-messaging 23.0.0 Cloud Storage com.google.firebase:firebase-storage 20.0.0 Crashlytics com.google.firebase:firebase-crashlytics 18.2.4 Crashlytics NDK com.google.firebase:firebase-crashlytics-ndk 18.2.4 Crashlytics plugin com.google.firebase:firebase-crashlytics-gradle 2.8.0 Dynamic feature module support com.google.firebase:firebase-dynamic-module-support 16.0.0-beta01 Dynamic Links com.google.firebase:firebase-dynamic-links 21.0.0 In-App Messaging com.google.firebase:firebase-inappmessaging 20.1.1 (required) In-App Messaging Display com.google.firebase:firebase-inappmessaging-display 20.1.1 (required) Firebase installations com.google.firebase:firebase-installations 17.0.0 Firebase ML Model Downloader API com.google.firebase:firebase-ml-modeldownloader 24.0.0 Performance Monitoring com.google.firebase:firebase-perf 20.0.3 Performance Monitoring plugin com.google.firebase:perf-plugin 1.4.0 Realtime Database com.google.firebase:firebase-database 20.0.2 Remote Config com.google.firebase:firebase-config 21.0.1 Google Play services plugin com.google.gms:google-services 4.3.10 Deprecated libraries Firebase ML Custom Model APIs com.google.firebase:firebase-ml-model-interpreter 22.0.4 Firebase ML Vision APIs com.google.firebase:firebase-ml-vision 24.1.0 Firebase ML: Image Labeling Model com.google.firebase:firebase-ml-vision-image-label-model 20.0.2 Firebase ML: Object Detection and Tracking Model com.google.firebase:firebase-ml-vision-object-detection-model 19.0.6 Firebase ML: Face Detection Model com.google.firebase:firebase-ml-vision-face-model 20.0.2 Firebase ML: Barcode Scanning Model com.google.firebase:firebase-ml-vision-barcode-model 16.1.2 Firebase ML: AutoML Vision Edge API com.google.firebase:firebase-ml-vision-automl 18.0.6 Firebase ML: Natural Language APIs com.google.firebase:firebase-ml-natural-language 22.0.1 Firebase ML: Language Identification Model com.google.firebase:firebase-ml-natural-language-language-id-model 20.0.8 Firebase ML: Translate Model com.google.firebase:firebase-ml-natural-language-translate-model 20.0.9 Firebase ML: Smart Reply Model com.google.firebase:firebase-ml-natural-language-smart-reply-model 20.0.8

Kotlin+KTX

Service or Product Gradle dependency Latest
version
Add Analytics?
Firebase Android BoM
(Bill of Materials)
com.google.firebase:firebase-bom

The latest Firebase BoM version contains the latest versions of each Firebase Android library. To learn which library versions are mapped to a specific BoM version, review the release notes for that BoM version.

29.0.0 AdMob com.google.android.gms:play-services-ads 20.4.0 Analytics com.google.firebase:firebase-analytics-ktx 20.0.0 App Check custom provider com.google.firebase:firebase-appcheck 16.0.0-beta03 App Check debug provider com.google.firebase:firebase-appcheck-debug 16.0.0-beta03 App Check SafetyNet provider com.google.firebase:firebase-appcheck-safetynet 16.0.0-beta03 App Distribution plugin com.google.firebase:firebase-appdistribution-gradle 2.2.0 App Indexing com.google.firebase:firebase-appindexing 20.0.0 Authentication com.google.firebase:firebase-auth-ktx 21.0.1 Cloud Firestore com.google.firebase:firebase-firestore-ktx 24.0.0 Cloud Functions for Firebase Client SDK com.google.firebase:firebase-functions-ktx 20.0.1 Cloud Messaging com.google.firebase:firebase-messaging-ktx 23.0.0 Cloud Storage com.google.firebase:firebase-storage-ktx 20.0.0 Crashlytics com.google.firebase:firebase-crashlytics-ktx 18.2.4 Crashlytics NDK com.google.firebase:firebase-crashlytics-ndk 18.2.4 Crashlytics plugin com.google.firebase:firebase-crashlytics-gradle 2.8.0 Dynamic feature module support com.google.firebase:firebase-dynamic-module-support 16.0.0-beta01 Dynamic Links com.google.firebase:firebase-dynamic-links-ktx 21.0.0 In-App Messaging com.google.firebase:firebase-inappmessaging-ktx 20.1.1 (required) In-App Messaging Display com.google.firebase:firebase-inappmessaging-display-ktx 20.1.1 (required) Firebase installations com.google.firebase:firebase-installations-ktx 17.0.0 Firebase ML Model Downloader API com.google.firebase:firebase-ml-modeldownloader-ktx 24.0.0 Performance Monitoring com.google.firebase:firebase-perf-ktx 20.0.3 Performance Monitoring plugin com.google.firebase:perf-plugin 1.4.0 Realtime Database com.google.firebase:firebase-database-ktx 20.0.2 Remote Config com.google.firebase:firebase-config-ktx 21.0.1 Google Play services plugin com.google.gms:google-services 4.3.10 Deprecated libraries Firebase ML Custom Model APIs com.google.firebase:firebase-ml-model-interpreter 22.0.4 Firebase ML Vision APIs com.google.firebase:firebase-ml-vision 24.1.0 Firebase ML: Image Labeling Model com.google.firebase:firebase-ml-vision-image-label-model 20.0.2 Firebase ML: Object Detection and Tracking Model com.google.firebase:firebase-ml-vision-object-detection-model 19.0.6 Firebase ML: Face Detection Model com.google.firebase:firebase-ml-vision-face-model 20.0.2 Firebase ML: Barcode Scanning Model com.google.firebase:firebase-ml-vision-barcode-model 16.1.2 Firebase ML: AutoML Vision Edge API com.google.firebase:firebase-ml-vision-automl 18.0.6 Firebase ML: Natural Language APIs com.google.firebase:firebase-ml-natural-language 22.0.1 Firebase ML: Language Identification Model com.google.firebase:firebase-ml-natural-language-language-id-model 20.0.8 Firebase ML: Translate Model com.google.firebase:firebase-ml-natural-language-translate-model 20.0.9 Firebase ML: Smart Reply Model com.google.firebase:firebase-ml-natural-language-smart-reply-model 20.0.8

Next steps

Add Firebase services to your app:

Gain insights on user behavior with Analytics.

Set up a user authentication flow with Authentication.

Store data, like user information, with Cloud Firestore or Realtime Database.

Источник

Firebase: прощание с иллюзиями

Маркетинг стал частью мира разработки. По количеству звездочек на GitHub определяют, какое из похожих друг на друга решений круче, а по количеству твитов можно спрогнозировать, какая технология будет развиваться в ближайшие полгода. В таких условиях мы рискуем стать жертвами хайпа, что мы в Лайв Тайпинге и сделали, принимая Firebase за Священный Грааль, способный решить все проблемы разом: сбора статистики, интеграции чатов, выбора базы данных, быстрой разработки MVP. Когда же я столкнулся с этим сервисом в бою, то понял, что моё представление о Firebase расходилось с реальностью настолько сильно, что понимание области применения технологии стало для меня настоящим откровением. Я хочу поделиться этим пониманием и тем, как всё-таки использовать Firebase правильно.

image loader

Желание поработать с Firebase появилось у меня давно, но я ждал подходящего проекта. И дождался: MVP системы бронирования офисов. Так как это MVP, бизнес-логика бэкендa довольно примитивная. К тому же к Firebase будет подключаться мобильное приложение на iOS. С виду идеальный случай для использования сервиса, но в ходе реализации пришлось столкнуться с некоторыми проблемами, о которых и пойдёт речь дальше.

Но сначала хотелось бы устранить все недопонимания. Вот две вещи, которые нужно усвоить для работы с Firebase:

Преамбула

Представим, что вы разрабатываете систему бронирования для сети отелей.

image loader

Там есть такие сущности:

Как реализовать это на NoSQL (Firebase)? Можно попробовать вложить сущности в друг-друга:

Тут начинают возникать вопросы: а стоит ли вкладывать все букинги в номер? а куда вкладывать клиентов? И т.п. Проблема NoSQL зачастую в том, что данные приходится дублировать.

Есть второй вариант: попытаться использовать NoSQL схожим с SQL способом и создать в корне объекты для каждой сущности, а связи поддерживать, храня id других объектов.

Вероятно, в других NoSQL-базах бороться с этими проблемами проще, но решения для своих задач я в Firebase не нашёл.

Какой бы вариант вы не предпочли, у них есть одинаковая проблема: невозможность сделать сложную выборку данных. Что делать, если вы хотите получить список бронирований конкретного клиента? Эти бронирования могут оказаться вложенными в разные номера и отели, а если структура плоская, то Firebase не сможет отфильтровать данные по нескольким параметрам (эту проблему даже обсуждали на StackOverflow). В общем, если вы хотите сделать выборку по клиенту и дате бронирования, Firebase SDK вам ничем не поможет.

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

image loader

Что делать?

Не использовать Firebase для сложной выборки данных. В этом нам может помочь собственный бэкенд на Node.js и один из нижеописанных инструментов.

ElasticSearch

image loader

Это поисковый движок с JSON REST API, использующий Lucene и написанный на Java. Подробности можно почитать на официальном сайте, а мы сразу начнём рассматривать его в связке с Firebase.

Установка

Нужно поставить ElasticSearch на сервер (сделать это по инструкции будет несложно). После нужно интегрировать его с Firebase, а именно — создать поисковый индекс из базы Firebase. Я использовал официальную интеграцию от Firebase. Для запуска нужно скачать репозиторий, установить зависимости и заполнить config с ключами для Firebase.

В этом решении я нашел несколько минусов:

ElasticSearch бесплатен и разворачивается на своём подконтрольном сервисе — это плюс. Но вместе с тем возникает ряд проблем с деплоем и безопасностью, которые нужно продумать заранее.

Пример: открыт порт, используемый Elastic Search для внешних запросов. Это создаёт уязвимость, так как этот же порт используется для записи и управления поисковыми индексами. Возможным результатом такого недосмотра станет удаление поискового индекса или внесение в него своих данных. Поэтому изначально этот порт открыт только для запросов с той же машины, на которой установлен ElasticSearch.

Сделаем вывод: вопрос того, как реализовать взаимодействие между пользователем, ElasticSearch и бэкендом, ложится на плечи разработчика.

Algolia

image loader
SaaS-решение для поиска. Платное, но с бесплатным планом. С прайсом и прочими деталями можно ознакомиться на официальном сайте.

Интеграция с Firebase реализована при помощи официальной js-библиотеки. Процесс установки и запуска подробно описан в readme, и у меня всё заработало с первой попытки.

Выглядит интеграция примерно так:

В результате мы получаем поисковый индекс в Algolia, содержащий все объекты rooms из Firebase. Обратите внимание, что по ходу импорта данные можно обработать дополнительно, например подтянуть название отеля из другого объекта в базе данных.

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

Единственный минус в использовании Algolia в том, что за SaaS нужно платить. Но для MVP бесплатного тарифа должно быть достаточно, а делать на Firebase масштабный проект мало кому придёт в голову (я надеюсь).

В противовес этому сомнительному минусу мы получаем удобную админку с доступом к аналитике, поисковому индексу и нюансам работы поисковых запросов.
Важным плюсом является наличие SDK под всё и вся — от мобильных платформ до фреймворков для бэкенда. В суть я не вникал, но iOS-разработчик сказал: это удобнее, чем REST.

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

Итоги

Выгоды этой довольно простой системы ощутимы. Мы получаем:

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

Жду в комментариях ваших историй об интеграции Firebase и замечаний по статье. Спасибо!

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • fire финансовая независимость ранняя пенсия
  • fire три формы глагола