Добавить в корзинуПозвонить
Найти в Дзене
Zoro game store

Как встроить проверку обновлений из центральной базы ZoBase (на примере приложения Stream)

Если вы разрабатываете приложение и хотите централизованно управлять его версиями, уведомлять пользователей о новых релизах и предоставлять ссылку на скачивание — база данных ZoBase от zoro-game.store станет отличным решением. В этой статье я покажу, как легко подключить ваше приложение к JSON-файлу ZObase.json и получать актуальные данные об обновлениях.
Что такое ZoBase?
ZoBase — это открытый

Если вы разрабатываете приложение и хотите централизованно управлять его версиями, уведомлять пользователей о новых релизах и предоставлять ссылку на скачивание — база данных ZoBase от zoro-game.store станет отличным решением. В этой статье я покажу, как легко подключить ваше приложение к JSON-файлу ZObase.json и получать актуальные данные об обновлениях.

Что такое ZoBase?

ZoBase — это открытый JSON-файл, расположенный по адресу:

https://zoro-game.store/data/ZObase.json

В нём хранится массив объектов, каждый из которых описывает отдельное приложение (или игру) с такими полями, как:

· id — уникальный числовой идентификатор приложения

· title — название

· UPDATES_Vers — текущая версия в магазине (например "1.4.2")

· UPDATES_descr — описание изменений

· download_link — прямая ссылка на APK-файл

· IconGame, descr, price и много других метаданных

Ваше приложение периодически запрашивает этот JSON, находит в нём запись по своему id и сравнивает версию из базы с локальной версией. Если есть расхождение — можно предложить пользователю обновление.

Пример из реального приложения: Stream

Возьмём приложение Stream (id=34). Его разработчики реализовали проверку обновлений на Dart/Flutter. Вот фрагмент их кода:

dart
import 'dart:convert';
import 'package:http/http.dart' as htt
const int appId = 34;
const String currentVersion = '1.4.1';
const String baseUrl = 'https://zoro-game.store';
final Uri databaseUri = Uri.parse('$baseUrl/data/ZObase.json');
final Uri storeUri = Uri.parse('$baseUrl/pages/game/game.html?id=$appId');
Future<void> checkForUpdates() async {
final response = await http.get(databaseUri);
if (response.statusCode < 200 || response.statusCode >= 300) {
throw Exception('HTTP ${response.statusCode}');
}
final decoded = jsonDecode(utf8.decode(response.bodyBytes));
if (decoded is! List) {
throw const FormatException('Invalid update database format');
}
final appData = decoded.cast<dynamic>().whereType<Map>().firstWhere(
(entry) => entry['id'] == appId || entry['id']?.toString() == '$appId',
orElse: () => const <String, dynamic>{},
);
if (appData.isEmpty) {
throw Exception('App with id $appId not found');
}
final storeVersion = appData['UPDATES_Vers']?.toString().trim() ?? '';
final updateDescription = appData['UPDATES_descr']?.toString().trim() ?? '';
final title = appData['title']?.toString().trim() ?? 'App';
final hasUpdate = normalizeVersion(storeVersion).isNotEmpty &&
normalizeVersion(storeVersion) != normalizeVersion(currentVersion);
if (hasUpdate) {
print('Update available for $title');
print('Version: $storeVersion');
print('Description: $updateDescription');
print('Open: $storeUri');
} else {
print('No updates found');
}
}
String normalizeVersion(String value) {
var normalized = value.trim().toLowerCase();
if (normalized.startsWith('v')) {
normalized = normalized.substring(1);
}
final buildSeparatorIndex = normalized.indexOf('+');
if (buildSeparatorIndex >= 0) {
normalized = normalized.substring(0, buildSeparatorIndex);
}
return normalized.trim();

Как это работает (пошагово)

1. Загрузка JSON

http.get(databaseUri) получает файл ZObase.json. Убедитесь, что обрабатываете ошибки сети и некорректный статус ответа.

2. Декодирование

JSON преобразуется в список (List). Именно такой формат используется на zoro-game.store.

3. Поиск записи по id

Код ищёт элемент, у которого поле id равно вашему appId. Обратите внимание на двойную проверку: entry['id'] == appId на случай, если id пришёл числом, а entry['id']?.toString() == '$appId' — если строкой.

4. Извлечение версии и описания

Берутся поля UPDATES_Vers и UPDATES_descr. Если их нет — используются пустые строки.

5. Нормализация версий

Функция normalizeVersion удаляет префикс v, обрезает пробелы и отбрасывает суффикс сборки (всё, что после +). Это позволяет корректно сравнивать строки типа "1.4.2", "v1.4.2" или "1.4.2+123".

6. Сравнение

Если нормализованная версия из базы существует и отличается от текущей версии приложения (currentVersion) — обнаружено обновление.

7. Реакция на обновление

В примере просто печатается сообщение и показывается ссылка на страницу приложения (storeUri). В реальном приложении вы должны показать диалог пользователю и предложить скачать новый APK по ссылке download_link (которая также есть в объекте appData).

Адаптируем код под ваше приложение

Чтобы использовать этот механизм в своём проекте, выполните три простых шага:

1. Получите свой id в ZoBase

Ваше приложение уже должно быть добавлено в массив ZObase.json с уникальным идентификатором. Если вы разработчик на zoro-game.store — обратитесь к администратору базы.

2. Укажите свои константы

dart
const int appId = 123; // Ваш ID
const String currentVersion = '2.0.0'; // Локальная версия приложения

3. Обработайте результат проверки

Вместо print реализуйте показ уведомления и установку обновления. Например:

dart
if (hasUpdate) {
// Показать диалог с updateDescription и кнопкой "Обновить"
// По нажатию открыть download_link через браузер или загрузить APK напрямую
final downloadUrl = appData['download_link'];
// launchUrl(Uri.parse(downloadUrl));
}

Дополнительные возможности ZoBase

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

· descr — полное описание приложения (можно отображать в «О программе»)

· IconGame — URL иконки (для кеширования и показа)

· price — цена (даже если бесплатно, можно показывать «0»)

· Telegram_download / Telegram_coment — ссылки на Telegram-канал для обратной связи

· DEVELOPER — имя разработчика

· file1, file2, … — дополнительные файлы (обновления, патчи)

· html_link — прямая ссылка на HTML-страницу приложения

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

Заключение

Централизованная база ZoBase — это удобный и лёгкий способ распространять информацию о версиях ваших приложений. Вам не нужно обновлять код в каждом приложении отдельно, когда вы выпускаете новую версию. Достаточно один раз изменить запись в ZObase.json, и все установленные экземпляры приложения увидят обновление.

Используйте приведённый код как отправную точку, адаптируйте его под свой язык/платформу (Java/Kotlin, Swift, React Native — логика остаётся той же) и дайте пользователям всегда быть в курсе свежих релизов вашего продукта.

Полезные ссылки:

· База: https://zoro-game.store/data/ZObase.json

· Пример страницы приложения: https://zoro-game.store/pages/game/game.html?id=34

Удачной интеграции!