VIP-акции в играх

Платформа Игр на Одноклассниках предоставляет разработчикам возможность привлекать в свои игры пользователей с помощью особых бонусов для VIP-пользователей.

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

Как это работает

Принцип работы достаточно прост:

  • разработчик устанавливает для игры список активных VIP-акций (метод apps.setVipOffers);
  • акция показывается пользователю в специальном блоке с VIP-акциями;
  • если пользователь имеет включенный статус VIP, то он может нажать на кнопку выдачи бонуса по акции;
  • при клике пользователь переходит в игру, а в параметре custom_args передается идентификатор VIP-акции;
  • игра проверяет, выдавался ли ранее этот бонус пользователю (метод apps.checkVipOfferStatus) и действительно ли он VIP (метод payment.getVipStatus);
  • если пользователь прошел проверку, то ему выдается бонус в игре;
  • игра отмечает, что пользователю был выдан бонус по соответствующей акции (метод apps.setVipOfferStatus).

Как это выглядит

У VIP-акций есть две точки показа:

  • блок в разделе игр на Одноклассниках - https://ok.ru/games/;
  • портлет в ленте пользователя.

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

В ленте пользователя портлет выглядит следующим образом:

В разделе игр блок выглядит так:

Список игр состоит из двух частей: игры из текущего игрового топа и список игр, которые установлены у пользователя.

Если у игры установлено несколько акций, то показывается первая из акций этой игры.

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

Установка VIP-акций для игры

Установка VIP-акций производится с помощью метода apps.setVipOffers.

Для акций действует ряд ограничений и условий, а именно:

  • у каждой игры может одновременно быть не более 5 акций;
  • акция должна иметь короткое название / описание, не превышающее 50 символов.

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

names=Три бонусные жизни VIP’ам,Новый уровень только для VIP’ов,50% бонусных очков

При таком значении параметра names у игры появится три акции с соответствующими названиями. Порядок бонусов не изменяется и каждому из них присвоится идентификатор от 0 до 4:

  • 0 - акция “Три бонусные жизни VIP’ам”;
  • 1 - акция “Новый уровень только для VIP’ов”;
  • 2 - акция “50% бонусных очков”.

Важно! При установке нового списка акций для игры предыдущий список акций очищается и они полностью заменяются новыми акциями.

Выдача бонуса пользователю

Выдача бонуса по акции - важный этап, состоящий из нескольких частей.

Во-первых, как игре понять, что пользователю хочет получить бонус по акции? При переходе по ссылке на игру в этом случае игре будет передан идентификатор акции в параметра custom_args.

Например, если пользователь хочет получить бонус по акции #1, то custom_args будет следующий:

custom_args=vipoffer=0

Определив id акции, по которой надо выдать бонус, игра должна проверить следующее:

  • действительно ли пользователь имеет включенную услугу VIP;
  • не был ли выдан бонус по этой акции пользователю ранее.

Проверка услуги VIP может быть проведена с помощью метода users.getCurrentUser или метода payment.getVipStatus. Для метода users.getCurrentUser надо указать в параметре fields поле user.VIP. Тогда в ответе метода будет boolean-поле vip, по которому как раз и можно определить, есть ли у пользователя включенная услуга VIP.

Метод payment.getVipStatus не имеет входных параметров и достаточно просто вызвать его в рамках пользовательской сессии, чтобы получить все необходимые данные.

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

{
    "success": true             /* индикатор: успешно ли выполнился метод */
    "value": false              /* индикатор: был ли выдан бонус ранее */
}

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

Установка флага выдачи бонуса

Недостаточно выдать бонус, надо еще и запомнить, что этот бонус пользователю был выдан, чтобы не выдать его повторно.

Для этого можно использовать метод apps.setVipOfferStatus.

В отличие от других методов, этот метод должен вызываться в пользовательской сессии. После успешной выдачи бонуса требуется в параметре slot указать идентификатор акции, а в параметре given - значение true.