Сервис для сбора и отправки событий аналитики на сервер с поддержкой кулдауна, гарантированной доставки и персистентного хранения.
- Накопление событий: События собираются в пакеты для эффективной отправки
- Система кулдауна: Настраиваемая задержка перед отправкой для группировки событий
- Гарантированная доставка: События сохраняются локально и переотправляются при неудачах
- Персистентность: Несохраненные события восстанавливаются после перезапуска приложения
- Автоматические повторы: Система повторных попыток с экспоненциальной задержкой
- Кроссплатформенность: Поддержка Android и WebGL
// Получаем ссылку на сервис
EventService eventService = FindObjectOfType<EventService>();
// Отправляем события
eventService.TrackEvent("levelStart", "level:3");
eventService.TrackEvent("rewardEarned", "type:coins,amount:100");
eventService.TrackEvent("currencySpent", "type:coins,amount:50,item:powerup");// Устанавливаем URL сервера аналитики
eventService.SetServerUrl("https://test55.free.beeceptor.com");
// Настраиваем время кулдауна (по умолчанию 2 секунды)
eventService.SetCooldownTime(3.0f);// Отправить все накопленные события немедленно (минуя кулдаун)
eventService.ForceFlushEvents();// Получить количество событий в очереди
int pendingCount = eventService.GetPendingEventsCount();
// Проверить, идет ли отправка
bool isSending = eventService.IsSending();
// Проверить, активен ли кулдаун
bool isCooldown = eventService.IsCooldownActive();- Создайте пустой GameObject на сцене
- Добавьте компонент
EventService - В инспекторе настройте параметры:
- Server Url: URL вашего сервера аналитики
- Cooldown Before Send: Время кулдауна в секундах (обычно 1-3 секунды)
- Max Retry Attempts: Максимальное количество попыток отправки (по умолчанию 5)
- Retry Delay Multiplier: Множитель для увеличения задержки между попытками
{
"type": "levelStart", // Тип события (строка)
"data": "level:3" // Данные события (строка)
}{
"events": [
{
"type": "levelStart",
"data": "level:3"
},
{
"type": "rewardEarned",
"data": "type:coins,amount:100"
}
]
}// Начало уровня
eventService.TrackEvent("levelStart", "level:5");
// Завершение уровня
eventService.TrackEvent("levelComplete", "level:5,score:2500,time:180");
// Получение награды
eventService.TrackEvent("rewardEarned", "type:coins,amount:150");
// Трата валюты
eventService.TrackEvent("currencySpent", "type:coins,amount:75,item:health_potion");
// Использование предмета
eventService.TrackEvent("powerupUsed", "type:speed_boost,level:3");
// Старт игры
eventService.TrackEvent("gameStart", "version:1.2.0,platform:android");- Накопление: Первое событие запускает кулдаун, последующие события добавляются в очередь
- Кулдаун: По истечении времени кулдауна все накопленные события отправляются одним запросом
- Отправка: HTTP POST запрос с JSON данными на указанный URL
- Повторы: При неудаче система автоматически повторяет отправку с увеличивающейся задержкой
- Сохранение: События сохраняются локально и восстанавливаются при следующем запуске
- Unity 2019.4 или выше
- Доступ к интернету для отправки событий
- Разрешения на запись файлов (автоматически для persistentDataPath)
Используйте EventServiceExample.cs для тестирования функциональности:
- Добавьте
EventServiceExampleна GameObject со сценой - Назначьте ссылку на
EventServiceв инспекторе - Запустите сцену и наблюдайте за логами в консоли
- Используйте UI панель для интерактивного тестирования
EventService.cs- Основной класс сервисаEventServiceExample.cs- Пример использования и тестированияREADME.md- Документация