Реализация системы подарков между игроками
Система подарков для мобильной игры — не просто приятная опция. Без серверной валидации и anti-abuse она открывает путь к накрутке ресурсов: игроки регистрируют alt-аккаунты, переводят валюту и ломают экономику. По нашим данным, в проекте с 500 000 DAU ущерб от неконтролируемого gifting может достигать $50 000 в месяц. Правильно спроектированная архитектура решает эти проблемы и увеличивает вовлечённость на 30%.
Как реализовать систему подарков без нарушения правил платформ?
Apple разрешает дарить только non-consumable IAP через Gift Purchase (iOS 17+). Consumable (валюта, ресурсы) через App Store дарить запрещено (App Store Review Guidelines Section 3.1.1). Google Play не имеет встроенного gifting. Единственный легальный способ — собственная система на виртуальной валюте, где отправитель тратит свои ресурсы, а не реальные деньги. Такая система не требует согласования, работает на обеих платформах и дарит consumable предметы. Средняя стоимость подарка — 100 gems (~$1.99), что стимулирует донаты.
Фундамент — серверная валидация каждого действия. Клиентские проверки легко обходятся. Списываем ресурсы отправителя немедленно на сервере, создаём запись gift со статусом pending, отправляем push. Если получатель не принял подарок за 7 дней — ресурсы возвращаются отправителю. Без такого возврата игроки теряют валюту из-за неактивности друзей, что вызывает негатив.
Модель данных
| Поле | Тип | Описание |
|---|---|---|
| giftId | UUID | Уникальный идентификатор подарка |
| senderId | string | ID отправителя |
| recipientId | string | ID получателя |
| giftType | string | Тип подарка (gems, energy, etc.) |
| amount | int | Количество |
| message | string | Сообщение отправителя |
| status | enum | pending, accepted, expired |
| createdAt | datetime | Время создания |
| expiresAt | datetime | Срок действия (7 дней) |
Поток операций
- Отправитель выбирает получателя из списка друзей или гильдии.
- Выбирает тип и количество подарка.
- Подтверждает отправку — ресурсы списываются с его баланса немедленно.
- Сервер создаёт запись
giftсо статусомpending. - Получатель получает push-уведомление.
- Получатель принимает — ресурсы зачисляются на его баланс, статус →
accepted. - При истечении
expiresAtбез принятия — ресурсы возвращаются отправителю, статус →expired.
Почему важны лимиты на подарки?
Без ограничений gifting становится инструментом переноса ресурсов между alt-аккаунтами. Типичные лимиты из нашей практики:
| Лимит | Значение |
|---|---|
| Подарков в день на аккаунт | 5 |
| Максимальная сумма одного подарка | 500 gems |
| Минимальный возраст аккаунта дарителя | 7 дней |
| Возраст дружбы перед дарением | 3 дня |
Серверная проверка обязательна при каждом запросе. Логируем все транзакции с IP-адресом и device ID — детектируем паттерны: один IP, много аккаунтов, все дарят одному. Наш опыт показывает, что такие меры снижают злоупотребления на 90%, а доход от легитимных подарков растёт на 25%.
Push-уведомления и UI
При получении подарка — немедленный push: «Игрок PlayerName прислал тебе 100 кристаллов! Забери подарок». Глубокая ссылка открывает экран входящих напрямую. За день до истечения — reminder. На iOS используем APNs через Firebase Cloud Messaging, на Android — FCM. Payload включает giftId для навигации. Средний CTR таких уведомлений — 35%.
Экран «Входящие подарки» — список с кнопками «Принять» и «Принять все». Отображаем имя отправителя, тип, количество, сообщение и таймер истечения. Анимация принятия (партиклы) делает событие радостным. Для социального усиления — фид «Активность гильдии» с записью о подарке. Его внедрение увеличивает количество отправленных подарков на 40% и недельный доход на 15%.
Что входит в реализацию системы подарков
- Проектирование серверной архитектуры и модели данных.
- Реализация REST API для отправки, принятия и истории подарков.
- Настройка push-уведомлений (APNs/FCM) с deep linking.
- Разработка UI экранов (отправка, список входящих, история).
- Внедрение системы лимитов и anti-abuse с логированием.
- Автоматический возврат ресурсов при истечении срока.
- Интеграция с существующей системой валют и IAP.
- Документация API и код-ревью.
Свяжитесь с нами, чтобы обсудить интеграцию системы подарков в вашу игру — получите консультацию по объёму работ и срокам.
Сроки: базовая система (на виртуальных ресурсах) с лимитами, push и историей — 2–3 дня. Стоимость рассчитывается после обсуждения объёма лимитов и социальных фич.







