- Firebase
- Консоль Firebase
- Firebase для Android: хранилище файлов
- Настройка проверки подлинности
- Загрузка файлов вручную
- Загрузка файлов из приложения для Android
- Загрузка файлов в виде массива байтов
- Получение URL-адреса файла
- Загрузка из Android приложения
- Загрузка массива байтов
- Загрузка из InputStream или файла
- Управление загрузками и использование обратных вызовов
- Обработка жизненного цикла Android Activity
- Вывод
- Начинаем писать приложение Material Design
- Фоновый звук в Android с MediaSessionCompat
- Как начать работать с шаблоном приложения для Android
Firebase
На конференции Google I/O 2015 была представлена облачная база данных на основе NoSQL с горящим названием Firebase. Год спустя в мае 2016 на этой же конференции было объявлено о революционном изменении.
Гугл показал новые возможности — теперь это уже целая платформа для построения Android-, iOS- и мобильных веб-приложений, а не просто база данных в облаке.
База данных позволяет работать с данными, которые хранятся как JSON, синхронизируются в реальном времени и доступны при отсутствии интернета.
Firebase поддерживает аутентификацию по связке электропочта+пароль, Facebook, Twitter, GitHub, Google и другие аутентификационные системы.
Кроме базы данных Firebase предлагает хостинг статичных файлов для веб-сайта.
Можно ставить отдельные зависимости в Gradle.
com.google.firebase:firebase-core:9.6.0 | Analytics |
com.google.firebase:firebase-database:9.6.0 | Realtime Database |
com.google.firebase:firebase-storage:9.6.0 | Storage |
com.google.firebase:firebase-crash:9.6.0 | Crash Reporting |
com.google.firebase:firebase-auth:9.6.0 | Authentication |
com.google.firebase:firebase-messaging:9.6.0 | Cloud Messaging and Notifications |
com.google.firebase:firebase-config:9.6.0 | Remote Config |
com.google.firebase:firebase-invites:9.6.0 | Invites and Dynamic Links |
com.google.firebase:firebase-ads:9.6.0 | AdMob |
com.google.android.gms:play-services-appindexing:9.6.0 | App Indexing |
Firebase Analytics – это инструмент для анализа мобильных приложений. Отчасти он похож на Google Analytics, но имеет ряд отличий.
Бывший сервис для доставки push-уведомлений из облака на устройства Google Cloud Messaging теперь интегрирован в Firebase и называется Firebase Cloud Messaging (FCM). Он полностью бесплатен, оптимизирован для экономии заряда батареи и работает на iOS, Android и в браузерах.
Firebase Storage позволяет организовывать загрузку и хранение файлов (изображения, видео, аудио и др.).
Firebase Remote Config позволяет подстраивать и обновлять элементы приложения на лету без необходимости обновлять пакет приложения и ждать, пока он станет доступен в магазине приложений, а затем обновится у пользователей. Вы можете включать и выключать определённые элементы приложений, распространять апдейт на конкретные Аудитории пользователей.
Firebase Authentication — аутентификация всех возможных форматов.
FIrebase Crash Reporting собирает и отсылает вам самую важную информацию, которая может помочь в поиске проблем iOS/Android-приложений после релиза.
Firebase Test Lab — облачное тестирование приложений на реальных девайсах, которые расположены в дата-центрах.
Firebase Notifications — новый интерфейс, построенный на базе API Firebase Cloud Messaging, дополненный возможностями Firebase Analytics и Аудиториями. Он позволяет таргетированно разослать уведомления пользователям вашего приложения не прикасаясь к редактору исходного кода. Рассказать о новых акциях, скидках, предложить персональные условия, обратить внимание людей на новые возможности теперь стало проще.
Firebase Dynamic Links улучшает работу со ссылками.
Firebase Invites позволяет быстро построить реферальную сеть — пусть ваши клиенты приводят новых.
Firebase App Indexing (бывший Google App Indexing) позволяет находить пользователям Google результаты непосредственно из вашего приложения.
Рекламная платформа AdWords теперь интегрирована в Firebase. Firebase отслеживает прогресс вашей кампании в AdWords и автоматически заполняет соответствующие разделы в Firebase Analytics.
Рекламная площадка Google AdMob таже является частью Firebase. Как только вы начинаете использовать Firebase SDK в своём проекте — AdMob к вашим услугам. Различные рекламные форматы (в том числе и нативная реклама), качественная статистика, интеграция с другими элементами Firebase — уже в комплекте.
Консоль Firebase
Firebase | App success made simple — стартовая страница, в которой можно найти документацию. В ней можно увидеть ссылку на консоль, в которой находятся ваши проекты для взаимодействия с данными.
В консоли вы можете создавать новые проекты, просматривать данные пользователей, управлять файлами, работать с базой данных.
Большая часть новых продуктов, включая Analytics, Crash Reporting, Remote Config, и Dynamic Links — полностью бесплатны и не имеют каких-либо ограничений. Платные же сервисы — Test Lab, Storage, хостинг — имеет гибкую ценовую сетку. Бесплатный тариф SPARK с некоторыми ограничениями, отлично подойдёт для первых шагов, прототипа приложения, курсовой или дипломной работы, начала стартапа. Фиксированная ставка на тарифе FLAME для тех, кому нужна предсказуемая ежемесячная стоимость на ранних этапах развития приложения. Конфигурируемый тариф BLAZE для самых крупных клиентов.
Если вы уже успели создать проект на Firebase, когда он только появился, то ваш проект никуда не делся. Он по-прежнему поддерживается в старом интерфейсе. Но Гугл даёт возможность перейти на новую версию по желанию.
Источник
Firebase для Android: хранилище файлов
Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)
Во время конференции Google I/O в 2016 году Firebase была вновь представлена сообществу разработчиков в качестве основного инструмента для быстрой поддержки веб-страниц и мобильных приложений. В этом руководстве вы познакомитесь с функциями хранения и извлечения файлов, доступными для ваших приложений Android.
Чтобы узнать больше о базе данных Firebase в реальном времени, аналитике, отчетах о сбоях и аутентификации, ознакомьтесь с некоторыми нашими другими учебниками здесь, в Envato Tuts +.
Настройка проверки подлинности
Для краткости мы пропустим общий процесс настройки Firebase в вашем приложении Android и консоли Firebase. Если вы впервые пытаетесь использовать Firebase в приложении, я предлагаю сначала проверить статью Ashraff Hathibelagal «Начало работы с Firebase для Android».
Прежде чем вы сможете начать использовать Firebase Storage, вам необходимо либо убедиться, что ваш пользователь аутентифицирован, либо изменить правила проверки подлинности в консоли Firebase, чтобы позволить пользователям, не прошедшим проверку подлинности, получить доступ и загрузить файлы. Чтобы все было просто, мы сделаем последнее. Начнем с перехода в раздел Storage, выбрав Storage в левом меню.
Затем вы заметите, что в верхней части экрана Storage находятся две вкладки: Файлы и Правила.
Перейдите на вкладку «Правила», и в строке allow read, write: if request.auth != null; измените != на == и нажмите кнопку ОПУБЛИКОВАТЬ.
Теперь любой пользователь вашего приложения должен иметь возможность скачивать или загружать файлы из вашего Firebase-сервера. Хотя это не идеально подходит для production окружения, это значительно облегчит изучение хранилища Firebase без необходимости разбираться в коде аутентификации.
Загрузка файлов вручную
Хотя возможность загрузки файлов из приложения очень удобная, иногда вы просто хотите хранить файлы где-то, где можно легко получить доступ и скачать их в ваше приложение. Здесь вы можете загружать файлы вручную из Firebase Console. На вкладке «Файлы» вы увидите синюю кнопку «Загрузить файл».
Щелкните ее и выберите файл, который вы хотите загрузить, и он появится в вашем хранилище Firebase.
При выборе этого файла на консоли будет отображаться подробное представление, позволяющее вам проверять файлы, которые ранее были загружены.
Загрузка файлов из приложения для Android
Теперь, когда у вас есть файл, хранящийся в Firebase, давайте скачаем его в приложение. Мы будем использовать простой макет в нашей MainActivity , который содержит ImageView с id изображения.
Чтобы получить доступ к файлам хранилища Firebase, вам нужно сначала получить ссылку на объект FirebaseStorage , а затем создать StorageReference на URL вашего проекта и файл, который вы хотите загрузить. URL вашего проекта можно найти в верхней части раздела «Файлы» Хранилища в Firebase Console.
Затем вы можете создать объект File и попытаться загрузить нужный файл, вызвав getFile у вашего StorageReference с новым объектом File , переданным в качестве параметра. Поскольку эта операция выполняется асинхронно, вы можете добавить OnSuccessListener и OnFailureListener к вашему вызову, чтобы справляться с непредвиденными обстоятельствами.
В onSuccess() из OnSuccessListener вы можете взять объект FileDownloadTask.TaskSnapshot и получить файл, из которого мы установим изображение в наш ImageView .
Загрузка файлов в виде массива байтов
Если вам нужно только загрузить файл в виде byte[] , и он не нужен вам в качестве файла, что является более вероятным случаем при загрузке изображения в ImageView , тогда вы можете получить байты аналогичным образом.
Получение URL-адреса файла
Могут быть ситуации, когда вам не нужны фактические данные для сохраненного файла, но скорее будет нужен URL. Вы можете сделать это аналогично двум последним примерам, используя метод getDownloadUrl() на вашем StorageReference , который даст вам Uri , указывающий на местоположение файла.
Вышеуказанный метод распечатает URL-адрес изображения, которое мы вручную загрузили ранее в Android-мониторе.
Загрузка из Android приложения
Теперь, когда вы знаете, как загружать файлы из Firebase, пришло время поработать над загрузками. Как вы видели при загрузке из Firebase Storage, процессы для каждой формы ваших данных довольно схожи. Загрузка не отличается, поэтому мы просто погрузимся в то, как вы можете перемещать файлы из своего приложения в Firebase Storage.
Загрузка массива байтов
Как и при загрузке, вам нужно будет получить ссылку на объект FirebaseStorage и создать ссылку на место хранения вашего нового файла в качестве StorageReference . В этом примере мы покажем ic_launcher.png в нашем ImageView, а затем загрузим его как массив байтов.
Затем нам нужно будет получить массив байтов из изображения, хранящегося в памяти, через ImageView . Это делается путем извлечения его в виде Bitmap , сжимающего его в ByteArrayOutputStream , а затем превращая его в byte[] .
Наконец, вы можете создать UploadTask , вызвав putBytes(byte[]) , чтобы загрузить изображение в Firebase. В этом UploadTask также могут быть связанные с ним OnSuccessListener и OnFailureListener .
Когда вы проверяете страницу хранилища Firebase Console, вы должны увидеть ic_launcher.png в своем списке файлов.
Загрузка из InputStream или файла
Теперь, когда вы знаете, как загрузить массив байтов, два других типа загрузок должны быть достаточно интуитивно понятными. Допустим, у нас есть текстовый файл с именем test.txt в нашей папке с исходными ресурсами. Мы можем прочитать его в InputStream , а затем загрузить его, используя метод putStream(InputStream) у StorageReference .
Загрузка существующего файла так же делается довольно легко: просто получите ссылку на файл и вызовите putFile(Uri) с URI, указывающим на ваш файл. В этом примере мы просто создадим пустой файл temp в нашем коде.
Управление загрузками и использование обратных вызовов
Пока файлы, которые мы загрузили до сих пор, были небольшими, могут быть случаи, когда у вас будут большие загрузки, которые занимают достаточно много времени. Firebase предоставляет несколько методов с UploadTask , которые позволят вам контролировать поток загрузки и слушать изменения прогресса и состояния. Эти методы включают pause() , resume() и cancel() . pause() и resume() позволят вам приостановить и возобновить UploadTask , тогда как cancel() полностью остановит ее. Кроме того, вы можете использовать OnPauseListener и OnProgressListener , чтобы отслеживать состояния загрузки и состояния паузы.
Вышеприведенный код позволит вам контролировать процесс загрузки для несколько большого (1 МБ, в данном случае) изображения и видеть его состояния, изменяющиеся в логах Android, когда нажаты кнопки паузы и возобновления.
Обработка жизненного цикла Android Activity
Как может подтвердить любой разработчик Android, иногда жизненный цикл Android Activityможет вызвать непредвиденные проблемы. Одним из распространенных источников проблем является прослушивание, которое длится дольше, чем их родительская Activity , что может быть причиной для успешного или неуспешного завершения слушаетелй, связанных с задачей хранения Firebase.
Если Activity уничтожается и воссоздается (например, при вращении экрана) во время выполнения задачи, вы можете получить исключение NullPointerException , когда задача завершится. Чтобы этого избежать, вам нужно сохранить свой StorageReference в виде String в своем исходном Bundle в методе onSaveInstanceState(Bundle) , а затем восстановить его и добавить слушателей успеха в каждую FileDownloadTask или FileUploadTask , связанную с этим StorageReference .
Вывод
В этом уроке вы много узнали о Firebase и его доступных вариантах хранения файлов. Теперь вы можете загружать и скачивать файлы, управлять передачей данных и обрабатывать изменения жизненного цикла вашего приложения во время транзакции.
Хотя мы только лишь поверхностно прошлись по этой теме, понимание этого инструмента, мы надеемся, позволит вам расширить возможности ваших собственных приложений.
А пока ознакомьтесь с некоторыми другими нашими статьями по разработке Android!
Начинаем писать приложение Material Design
Фоновый звук в Android с MediaSessionCompat
Как начать работать с шаблоном приложения для Android
Источник