Углубленное создание приложений с MIT App Inventor
Работа с базами данных
Локальное хранилище с TinyDB
Представьте, что ваше приложение — это дом, а данные — это вещи в нем. Некоторые вещи, вроде любимой кружки, вы держите под рукой. Для этого в App Inventor есть компонент TinyDB. Это простое локальное хранилище прямо на устройстве пользователя.
TinyDB работает по принципу «ключ-значение». Вы даете данным уникальное имя (ключ или tag) и сохраняете их. Позже, используя тот же ключ, вы можете эти данные получить. Это идеально подходит для сохранения настроек, имени пользователя или рекорда в игре. Данные, сохраненные в TinyDB, остаются в приложении даже после его закрытия и перезапуска.
Главное помнить: TinyDB хранит данные только на одном конкретном устройстве. Если пользователь установит ваше приложение на другой телефон, данные не перенесутся.
Давайте посмотрим, как это работает. Чтобы сохранить имя пользователя, вы используете блок StoreValue. Ему нужны два параметра: tag (например, «userName») и valueToStore (имя, которое ввел пользователь).
Чтобы прочитать имя, используется блок GetValue. Вы указываете тот же tag («userName»). Важно также задать значение valueIfTagNotThere — это то, что вернется, если по такому ключу еще ничего не сохранено. Например, можно вернуть пустую строку или «Гость».
Работа с облаком: Firebase
А что если нужно, чтобы данные были доступны на разных устройствах? Или чтобы несколько пользователей могли работать с одними и теми же данными, например, в общем чате или списке дел? Здесь на помощь приходит облачное хранилище. В App Inventor для этого есть компонент FirebaseDB.
Firebase — это сервис от Google, который предоставляет базу данных реального времени. «Реальное время» означает, что как только данные в базе меняются, все подключенные приложения мгновенно получают обновления. Это похоже на магию: один пользователь что-то добавляет в список, и он тут же появляется у всех остальных.
Работа с Firebase похожа на работу с TinyDB. Здесь тоже есть блоки StoreValue и GetValue, и они также используют tag и value. Основное отличие в том, что данные отправляются не в память телефона, а в интернет, в вашу базу данных Firebase.
Для начала работы нужно создать проект в консоли Firebase и указать URL вашего проекта в настройках компонента FirebaseDB в App Inventor.
Ключевой элемент Firebase — это блок-событие DataChanged. Он срабатывает каждый раз, когда данные по отслеживаемому ключу (tag) изменяются. Именно благодаря ему ваше приложение узнает об обновлениях. Например, если вы создаете чат, то при получении нового сообщения в базе сработает DataChanged, и вы сможете отобразить это сообщение на экране.
Списки и сложные данные
И TinyDB, и Firebase могут хранить не только простой текст или числа, но и более сложные структуры, например, списки. Это очень удобно. Вам не нужно создавать отдельный ключ для каждого элемента списка дел. Вы можете сохранить весь список целиком под одним ключом, например, «todoList».
Для работы со списками в App Inventor есть специальные блоки. Вы можете создать список, добавить в него элемент, удалить элемент по индексу или получить значение элемента. Когда вы сохраняете список в базу данных, он сохраняется как единое целое. Когда вы его получаете, он также приходит в виде списка, с которым можно продолжать работать.
// Пример сохранения списка покупок
// Создаем список
set global shoppingList to make a list("Молоко", "Хлеб", "Яйца")
// Сохраняем его в TinyDB
call TinyDB1.StoreValue(
tag: "groceries",
valueToStore: get global shoppingList
)
Таким же образом можно хранить и более сложные структуры, например, список списков или даже данные в формате JSON. Это открывает большие возможности для управления данными в ваших приложениях, от простых настроек до сложных каталогов товаров.
Безопасность данных
Когда вы работаете с данными, особенно в облаке, важен вопрос безопасности. Данные в TinyDB хранятся локально и доступны только вашему приложению, поэтому они относительно защищены.
С Firebase все серьезнее, потому что база данных доступна через интернет. Firebase предоставляет гибкие правила безопасности (Security Rules), которые позволяют вам контролировать, кто может читать и записывать данные. Эти правила пишутся в формате, похожем на JSON, прямо в консоли Firebase.
Вы можете, например, разрешить пользователям изменять только свои собственные данные. Для этого используется аутентификация: пользователь входит в систему, и правила проверяют его уникальный идентификатор (UID), прежде чем разрешить доступ.
Пример простого правила: разрешить чтение всем, а запись — только аутентифицированным пользователям.
{
"rules": {
".read": true,
".write": "auth != null"
}
}
Настройка правил безопасности — это обязательный шаг при создании любого серьезного приложения с использованием Firebase. Это гарантирует, что чужие данные останутся в безопасности, а ваше приложение будет работать предсказуемо и надежно.
В чем заключается основное различие между компонентами TinyDB и FirebaseDB в App Inventor?
Что произойдет, если вы используете блок GetValue компонента TinyDB с тегом, которого не существует в базе данных?
Теперь вы знаете, как хранить данные локально и в облаке, работать со списками и обеспечивать безопасность. Эти навыки — ключ к созданию более мощных и полезных приложений.
