Firebase что это простыми словами

Что вам нужно знать о Firebase: 9 советов

Полезные советы, основанные на личном опыте использования Firebase и его базы данных, были опубликованы в блоге Lemberg Solutions.

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

Совет 1

При создании модели базы данных для приложения, постарайтесь использовать как можно меньше вложенных объектов. Например:

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

Совет 2

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

Совет 3

Общение между базой данных Firebase и клиентом производится путем подключения пользователей к узлам баз данных. Обратите внимание, что когда вы свяжете пользователя с определённым узлом, он сразу получит данные. Так что вам надо игнорировать первое срабатывание в случае, если вы просто хотите “слушать” обновление ноды.

Совет 4

Если необходимо прочитать список объектов из узла, вы должны перебирать дочерние объекты снапшота и читать объекты один за другим. Например:

Совет 5

При чтении объекта и создании Java-класса, вам следует следовать определенным условиям (в определении полей объектов):

Если эти условия не будут соблюдены, данные нельзя будет парсить.

Совет 6

При использовании аутентификации необходимо проверить, существует ли пользователь и верны ли введенные параметры аутентификации. Вы можете использовать исключения:

Совет 7

Firebase плохо фильтрует данные. Например, вы можете сделать запрос, основанный только на одном условии, но вы не можете сделать запрос типа “WHERE… AND… AND”. В этой ситуации необходимо создать одно дополнительное поле в объекте, которое будет содержать значения, и выборка будет проходить с использованием этого значения. Например:

Используя эту структуру, мы можем найти комедию с Джеком Николсоном в главной роли.

Совет 8

В Firebase нет ролей. Все аутентифицированные аккаунты будут определяться только email-ом, паролем и универсальным идентификатором. Но мы можем назначить роли с помощью базы данных.

Совет 9

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

Как вы видите, в неправильном примере у парсера будет объект driver с вложенным объектом car, но на самом деле тип будет String.

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

Плюсы

Во-первых, база данных в реальном времени – это очень хорошая альтернатива серверу при создании несложных приложений, потому что в ней есть все необходимое. И, без сомнения, большой плюс – система callback-ов при получении данных. Когда что-то меняется в базе данных, ответное действие на стороне устройства срабатывает сразу же. Отлично, да?

Минусы

Нет замены старому доброму RESTful. Да, у него нет динамического обновления данных, но можно использовать базу данных SQL, которая значительно лучше NoSQL, которая используется в Firebase. Также в нем можно сделать сложную систему логинов. И помните, что у Firebase есть ограничения для бесплатных аккаунтов. Если вы хотите хранить большое количество данных в базе или зарегистрировать больше одного проекта в одном аккаунте, то вы должны будете заплатить.

Источник

Что такое Firebase и почему стоит с этим познакомиться

Firebase хранит текстовые данные в JSON формате и предоставляет удобные методы для чтения, обновления и извлечения данных. Также, Firebase может помочь с регистрацией и авторизацией пользователей, хранением сессий (авторизованные пользователи), медиафайлов к которым с легкостью предоставляет доступ благодаря Cloud Storage.

Естественно, Firebase не может быть полностью бесплатной. Часть самого крутого функционала остается за кадром для тех, кто не желает платить. Но самые основные и горячо востребованные функции регистрации, авторизации и хранения текста доступны всем после регистрации в системе.

Зачем нужна Firebase, ведь есть другие базы данных.

Единственная причина, по которой я изначально заинтересовался Firebase, это гибкость и скорость деплоя в проект.

Вот смотрите: языки программирования Python и JavaScript сами по себе гибкие (и очень популярные). Благодаря этому, мы (разработчики) получаем мощный инструмент для создания в кратчайшие сроки сайта, веб-приложения, мобильного или даже десктопного приложения.

Firebase позволяет сохранять эту скорость. Не нужно отвлекаться на какие-то другие вещи (создание базы данных, написание API приема и получения данных). Вся серверная часть ложится на плечи этого сервиса. Благодаря такому мощному инструменту можно за один вечер накидать функционал любого модуля с чтением, сохранением данных и показать заказчику функциональный пример.

Ну а если у Вас маленькое SPA-приложение или простенькое мобильное, где все сводится к манипулированию каких-то текстовых значений, можно использовать Firebase как основную базу данных. И даже платить не надо.

Панель управления Firebase

Переходим к практическому ознакомлению, давайте все щупать руками. Мы посмотрим, что находится внутри “Консоли разработчика” Firebase, познакомимся с интересными методами и отправим пару тестовых запросов. Примеры я буду показывать на JavaScript в проекте где используется Webpack и менеджер пакетов npm. Основа, все же, это JavaScript, поэтому не пугайтесь.

Регистрация

Сначала нужно перейти на сайт и зарегистрироваться в Firebase. Можно использовать свою Google почту для быстрой регистрации.

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Нажимаем на большую кнопку “Добавить проект”. По желанию подключаем Google Аналитику. Возможно (не знаю осталось ли это в новой версии), вас попросит выбрать местоположение проекта, просто выберите свою страну.

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Установка в проект за 60 секунд

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

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Прежде чем добавлять данный код в проект, нужно установить Firebase в свое приложение. Делается это очень легко с помощью команды:

Если у вас Mac или Linux добавьте перед npm команду sudo.

P.S: Если не учитывать, что пакеты будут устанавливаться около 3-4 минут, заголовок раздела полностью оправдывает себя. Ну ведь правда, за 60 секунд вполне реально подключить Firebase.

И не забудьте добавить firebase в проект.

import firebase from ‘firebase/app’
import ‘firebase/auth’
import ‘firebase/database’
import ‘firebase/storage’
import ‘firebase/messaging’

Можно, конечно, просто добавить одну строчку:

import firebase from ‘firebase/app’

Но тогда вес исходного файла dist.js, который собирается с помощью webpack для prodaction версии приложения будет нереально большой. Поэтому я просто выбрал то, что мне пригодится для примера.

Теперь вставляем код из конфигурации и запускаем метод firebase.initializeApp(), в аргумент которого складываем объект config. Все это делаем во время инициализации (начала работы) вашего приложения. Пример с моего проекта:

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Вот и все. Давайте посмотрим на полную мощь этого инструмента. Теперь можно перейти к регистрации пользователей.

Регистрация и авторизация пользователей за 5 минут

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Для начала вернемся в консоль Firebase и перейдем на страницу “Аутентификация”. Здесь есть две вкладки, это Пользователи и Метод регистрации.

Вкладка Пользователи покажет вам всех зарегистрированных пользователей в приложении. Вкладка Метод регистрации позволяет выбрать и настроить предпочтительный метод. Например, включим регистрацию по почте и паролю. По желанию можете там добавить авторизацию по ссылке пришедшей на почту. Просто нажмите на “Адрес электронной почты и пароль” и увидите необходимые настройки.

Метод firebase.auth().createUserWithEmailAndPassword()

С помощью этого метода мы создаем нового пользователя.

const data = firebase.auth().createUserWithEmailAndPassword(email, password)

После удачной регистрации константа data будет содержать в себе данные пользователя. Например, если вывести в консоль data.user.uid, можно увидеть уникальный идентификатор, который теперь присвоен этому пользователю.

async registration(email, password) <
try <
const data = await firebase.auth().createUserWithEmailAndPassword(email, password)
console.log(data.user.uid)
> catch (error) <
console.log(error.message)
throw error
>
>

Я создал асинхронную функцию (если с ними не знакомы, можете прочитать статью по ссылке). В конструкции try я создаю константу data, которая ждет await метод firebase. Благодаря волшебному слову await моя async функция превращается в промис и ждет заполнения переменной data. После заполнения (удачной регистрации) она превратится в объект и будет содержать в себе данные о пользователе. Т.е потом, можно вызвать эту переменную в консоль.

Например, можно вызвать console.log(data) и получить огромный объект с кучей разных атрибутов. В моем примере, через console.log(data.user.uid), вызывается уникальный идентификатор пользователя (которого мы только что зарегистрировали).

В сам метод firebase.auth().createUserWithEmailAndPassword() я отправляю почту пользователя и будущий пароль.

В catch мы можем попытаться поймать объект error.

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Из объекта error вы можете выдергивать сообщения или статус коды ошибок. Кстати, статус коды полезная вещь, ведь сообщения приходят на английском. Я лично обрабатываю только статус коды и вывожу через switch нужное сообщение пользователю.

Обработка ошибок из моего приложения:

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Оставлю полезную ссылку на все статус-коды ошибок у авторизации. У каждого метода свои статус коды ошибок!

Метод firebase.auth().signInWithEmailAndPassword()

Это метод авторизации. Давайте сразу на примере. Смотрим в конструкцию try.

async login(email, password) <
try <
const data = await firebase.auth().signInWithEmailAndPassword(email, password)
console.log(data.user.uid)
> catch (error) <
console.log(error.message)
throw error
>
>

Все такая же async функция и await метод. В await метод firebase.auth().createUserWithEmailAndPassword() я передаю почту и актуальный пароль пользователя.

После прохождения авторизации (успешного выполнения метода firebase.auth().createUserWithEmailAndPassword()) константа data будет содержать в себе объект user с его идентификатором. Если пароль (ну или еще что-нибудь) будет неверным, сработает метод catch и firebase ответит ошибкой.

Через catch мы как раз и ловим сообщения об ошибках от метода firebase.

Метод firebase.auth().onAuthStateChanged()

С помощью этого метода мы можем получить авторизованного пользователя. Это что-то вроде сессии. Пока сессия существует, мы можем использовать некоторые глобальные переменные Firebase. Например, получить объект user, в котором есть идентификатор авторизованного пользователя. Сама сессия существует пару дней и привязывается к ip адресу (но это не точно).

firebase.auth().onAuthStateChanged(user => <
if (user) <
// Какая-то логика
> else <
this.$router.push(‘/login’)
>
>)

Ну что, впечатлены? Если бы вы это делали второй или третий раз, то потратили не больше 10 минут на полноценную регистрацию и авторизацию пользователей.

Чтение, запись и обновление данных

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

Почему Realtime Database?

Потому что она старше, стабильней и почти любая проблема с ней освещена в интернете.

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

Возвращаемся к работе с данными

Чтобы контекст был понятен, так выглядит моя база на данный момент:

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Метод firebase.database().ref().push()

Для записи данных в Firebase используем метод firebase.database().ref().push().

async newClient(newClinet) <
try <
const addClient = await firebase.database().ref(‘clients’).push(newClinet)
console.log(addClient)
> catch (error) <
console.log(error.message)
throw error
>
>

Нам нужно создать асинхронную функцию. К методу firebase мы добавляем await. Если дальше хотим как-то обработать ответ от базы данных асинхронные функции обязательны.

Здесь в асинхронной функции newClient я передаю аргумент newClient. Данный аргумент содержит какой-то объект с данными, далее этот объект (новый клиент) я отправляю в Firebase.

Метод ref() содержит в себе путь, куда мы будем что-то добавлять. Для более детального понимания смотрите скриншот выше, там копия моей базы. Данного пути еще может даже не существовать, поэтому с помощью этого метода можно создавать новые хранилища (объекты в json хранилище).

Метод push() содержит в себе данные, которые мы будет отправлять в объект clients.

Представим, код выше я запустил 3 раза. Результат запросов вы можете увидеть все на том же скриншоте выше. Как видите Firebase сама создала главный объект (хранилище) clients и записала в него три объекта поменьше. Каждому объекту Firebase сгенерировала свой ключ (идентификатор). Он уникален в рамках объекта clients.

Метод firebase.database().ref().once()

Для получения данных из Firebase используем метод firebase.database().ref().once().

async loadClietsList() <
try <
const query_clientsList = await firebase.database().ref(‘clients’).once(‘value’)
const clientsList = query_clientsList.val()
console.log(clientsListArray)
> catch (error) <
console.log(error.message)
throw error
>
>

Нам нужно также создать асинхронную функцию. Методу firebase мы добавляем await. Константа query_clientsList содержит в себе вышеописанный метод. В ref указывается путь к объекту, который хотим получить. Посмотрите на скриншот выше, clients у меня находятся в основе моей базы данных, поэтому путь выглядит у меня максимально простым.

Если я хочу обратиться к какому-то клиенту из clients в ref, я укажу еще его идентификатор, получится ref(‘clietns/-M5mvz6HSFnbP3L2KiHG’), а если я хочу взять номер телефона конкретного клиента, ref будет выглядеть так ref(‘clietns/-M5mvz6HSFnbP3L2KiHG/number’).

После ref идет обязательный метод once(‘value’). Т.е мы говорим Firebase, что хотим по этой ссылке получить какие-то значение.

Когда await выполнится, и константа query_clientsList заполнится, мы можем воспользоваться методом val() по отношению к константе. Например, query_clientsList.val(). Если эту конструкцию мы попробуем отправить в консоль, то увидим заветные данные: три клиента из моей базы данных.

Метод firebase.database().ref().remove()

Данный метод отвечает за удаление данных из нужного объекта.

Такая команда полностью удалит весь объект clients.

Если путь у ref() будет примерно такой: ‘clients/-M5mvz6HSFnbP3L2KiHG’, то удален будет только тот объект в clients, который имеет данный идентификатор.

Права доступа

В базе данных есть вкладка “Правила”.

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

В самом начале раздела “Чтение, запись и обновление данных” я попросил вас установить правила чтения и записи базы данных в тестовый режим. Когда вы закончите разработку приложения, вы обнаружите, что ваши данные могут менять и получать абсолютно все, у кого есть ваш конфиг.

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

В правах доступа используется свой “язык” оперирующий значениями true и false. На скриншоте выше мои настройки, здесь я просто запретил чтение и запись всем, кто не авторизован. Мое приложение это обычная CRM система для малого бизнеса, у нее общее хранилище и данными внутри управляют 3-4 человека, а свободная регистрация вообще отсутствует, поэтому таких настроек хватает.

P.S: Как и обещал, ссылка на документацию к Storage.

Вывод

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

Опубликовано: 2020-05-04 16:45

Нужен сайт?

Готов за разумную плату разработать сайт, CRM-систему или внедрить дополнительный функционал в существующий проект.

Источник

Введение в Firebase: пишем простое социальное приложение на Swift

В связи с неожиданным решением Facebook закрыть Parse, многое разработчики задались вопросом, что использовать вместо него. Сегодня практически невозможно представить полностью автономное приложение, которое было бы полезное всем. В связи с этим, iOS разработчики в своей работе пользуются инструментами и ресурсами, предоставленные Apple для доступа к данным. Backend-as-a-service, или сокращенно BaaS является потрясающим инструментом для разработчиков.

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

Вместе с хранилищем, Firebase также предоставляет пользовательскую аутентификацию, и поэтому все данные передаются через защищенное соединение SSL. Мы можем выбрать любую комбинацию email и пароля для аутентификации, будь то Facebook, Twitter, GitHub, Google, или что-то другое.

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

Приложение FirebaseJokes

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

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

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

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

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

Время познакомиться с Firebase

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

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Чтобы просмотреть что к чему в Firebase, нажмите Manage App в My First App. Эта новая среда известна как Firebase Forge. Это крутой отладчик, и поэтому стоит пройти по нему обучение. Урок Forge поможет вам в создании ключей, значений и даже дочерних узлов с помощью символа плюс. Имеет смысл взглянуть на JSON, не так ли? Чтобы выйти из краткого обучения Forge, нажмите на панель инструментов в верхнем левом углу экрана.

Создание нового приложения

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Время создать FirebaseJokes. Слева My First App, нажмите на прозрачный прямоугольник, чтобы создать новое приложение. В поле APP NAME, введите “Jokes”, в APP URL введите “jokes-ваше-имя”, где “ваше-имя” это ваше собственное имя. Поле должно быть уникальным, т.к. это url для вашего приложения. Нажмите CREATE NEW APP и после Manage App.

И вот наш собственный экран Forge. При добавлении данных здесь они автоматически обновляться в нашем приложении. Также мы можем добавлять данные для приложения в вкладке Forge. Чтобы понять как работает наше приложение, с точки зрения данных, мы введем некоторые данные вручную.

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Вот пример того, как выглядит объект “jokes”. Мы будем добавлять новые шутки в объект “jokes”. Также нам понадобится объект “users”. Наблюдать за тем как в Forge меняются данные, созданные приложением, интересно и в то же время — это отличная практика.

Хочу отметить, что все данные в базе данных Firebase сохраняются в виде JSON. В отличии от Parse, тут не существует никаких таблиц и записей. Когда мы добавляем данные в базу данных Firebase, они становятся ключем структуры JSON. Например, данные, которые вы только что создали, выглядят так:

Теперь, когда у вас есть базовые знания о данных которые находятся в базе данных Firebas, пора двигаться дальше.
Но перед тем, как мы перейдем к аутентификации пользователя, удалим созданные данные, также как мы будем делать это программно из приложения.

Для FirebaseJokes, мы используем аутентификацию через Email и пароль. Чтобы включить эту функцию, нажмите Login & Auth на левой панели в Forge. В Email & Password, поставьте галочку на Enable Email & Password Authentication. Сразу под нажатой ячейкой находится информация об восстановлении пароля. Также, обратите внимание на другие опции аутентификации.

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Добавление Firebase SDK

Для получения base url для приложения, вернитесь на главный экран Forge. Текущий url и есть url для приложения, поэтому скопируем и вставим его в BASE_URL в Constants.swift Xcode.

Самое время добавить Firebase SDK в приложение. Перед этим нужно установить CocoaPods. Если вы его еще не установили, вы можете найти инструкции по установке CocoaPods.

Когда CocoaPods установлен, откройте терминал. Запустите следующие команды для установления Cocoapods в проект Xcode:

Затем введите следующую команду, чтобы открыть Podfile в Xcode:

Затем запустите следующую команду, чтобы скачать Firebase SDK:

Открываем созданный файл FirebaseJokes.xcworkspace.

Для того что бы мы могли импортировать Firebase SDK, создайте новый Objective-c File, FileType — Empty File. Назовите его Temp. При создании файла автоматически создастся файл FirebaseJokes-Bridging-Header.h. В нем пропишите такую строчку:

Удаляем Temp.m, он нам не понадобится.

Использование Firebase SDK

Чтобы немного упростить себе жизнь, сначала мы проведём небольшую настройку в DataService.swift. В первую очередь, нам нужно несколько ссылок:

Для использования Firebase, нужно импортировать фраемворк Firebase. Класс DataService служет для взаимодействия с Firebase. Чтобы прочитать или записать данные, необходимо создать ссылку на базу данных Firebase с Firebase URL. Base URL это URL базы данных приложения. Позже мы сохраним всех пользователей и все шутки в виде дочерних узлов. Чтобы иметь доступ к дочерним узлам, можно просто задать дочернее имя (то есть пользователей) к основному URL.

Создание нового пользовательского аккаунта

Мы начнем с CreateAccountViewController.swift. Нам нужно импортировать наш фреймворк.

В методе createAccount(), мы возьмем текст, который ввел пользователь и попытаемся использовать его для создания нового пользователя. Это касается метода Firebase createUser(). Обновите существующий метод таким образом:

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

Фактически сохранение происходит в методе createNewAccount() в DataService.swift.

Для сохранения данных в базу данных Firebase, можно просто вызвать метод setValue. В коде выше, объект user сохранится в базу данных под ключом users над данным дочерним узлом uid (прим. /users/1283834/).

Кроме сохранения пользователя в базе данных Firebase, мы сохраним uid для пользователя в NSUserDefaults. Это позволит отслеживать текущего пользователя.

Авторизация пользователя

Прежде чем перейти дальше, импортируем Firebase в LoginViewController.swift. Так мы сможем отследить если кто-то уже входил или пытается зарегистрировать пользователя.
В методе viewDidAppear(), мы проверяем является ли наш сохраненный “uid” nil и имеет ли пользователь аккаунт. Если пользователь был авторизирован, он пропускает экран авторизации. В противном случае, он будет вынужден авторизироваться.

Метод tryLogin(), который вызывается при попытке авторизации. Обновите этот метод как показано ниже и вставьте вспомогательный метод loginErrorAlert:

Firebase имеет встроенную поддержку для аутентификации пользователя с помощью email адреса и пароля. Наш метод tryLogin() использует метод authUser(), который позволяет увидеть соответствует ли email и пароль аккаунта пользователя. Если да, мы сохраняем “uid” и попадаем внутрь приложения. Если нет, мы уведомляем пользователя, что бы повторил попытку авторизации.

Теперь приложение готово для регистрация пользователей и авторизации, пора преступить к самой реализации приложения.

Объект Joke

Добавление новых шуток

В AddJokeViewController.swift делаем импорт Firebase. Пользователь добавляет шутку, и мы отправляем ее в наше хранилище, откуда она мгновенно отправится на все девайсы.

В методе viewDidLoad(), мы получим текущий пользовательский username, так что сможем указать автора новой шутки.

Обновите метод saveJoke :

Мы используем Dictionary чтобы временно хранить данные шутки. Фактически сохранение происходит в методе createNewJoke в DataService. В DataService.swift, добавьте метод createNewJoke:

Опять же, вы можете сохранить объект с помощью метода setValue(). Когда вызывается метод childByAutoId Firebase генерирует уникальный ID для каждой шутки на основе маркера, которая гарантирует, что шутка получит уникальный ID.

Выход текущего пользователя из системы

Обычно это фиксируют в разделе Settings или Profile, но мы дадим пользователю возможность выйти в AddJokeViewController.swift.

Обновите метод logout:

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

Отображение всех шуток на экране

В конечном счете, данные получаются с Firebase. Мы составляем список всех шуток в UITableView расположенные в JokesFeedTableViewController.swift. Не удивительно, что здесь мы будем импортировать Firebase.

Начнем с метода viewDidLoad(). Устанавливаем наш метод observeEventType(). Данные Firebase приходят путем добавления асинхронного слушателя к ссылке базы данных. Этот метод не вызывается во viewDidLoad() при переходе на JokesFeedTableViewController.swift, его вызывают при любых изменениях в jokes со стороны базы данных.

Метод предоставляет снимок. Используя снимок, мы можем создать ряд шуток для заполнения нашей tableView. Для шуток Firebase, мы создадим список, где новые шутки будут отображаться вверху. Поскольку Firebase распределит шутки в хронологическом порядке, мы сможем только создать ряд в обратном направлении.

Хорошо бы иметь постоянно обновляющийся массив шуток, мы помним про необходимость обновления данных в tableView чтобы мы могли увидеть их.

Остальная часть работы распределяется между tableView:cellForRowAtIndexPath: и нашей кастомной ячейкой, JokeCellTableViewCell.swift. В методе tableView:cellForRowAtIndexPath: мы отправляем шутку в метод configureCell() в JokeCellTableViewCell.swift.

Добавим метод configureCell(), в JokeCellTableViewCell.swift.

В методе voteTapped() слушатель ожидает сигнала. В этом методе сохраняются «голоса» текущего пользователя с ключом содержащим id шутки и true значение. Все это отправляется через созданный voteRef в метод configureCell().

Метод voteTapped() также ретранслирует сигнал как булевое значение в метод addSubtractVote() в Joke.swift. Значение true означает, что пользователь проголосовал за шутку; тогда как false означает, что пользователь еще не голосовал за нее.

Метод addSubtractVote(), в Joke.swift, использует булевое значение чтобы добавить или вычесть vote из joke. Затем, метод Firebase setValue() обновляет голоса по отношению к базе данных.

Тестирование приложения

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

Firebase что это простыми словами. Смотреть фото Firebase что это простыми словами. Смотреть картинку Firebase что это простыми словами. Картинка про Firebase что это простыми словами. Фото Firebase что это простыми словами

Подведем итог

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

Для IOS разработчиков существует целый мир новых возможностей с Firebase. Работа с FirebaseJokes послужит хорошей практикой, но это только начало.

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

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

Удачи в работе работая с Firebase в ваших будущих проектах!

Источник

Добавить комментарий

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