Запуск iframe приложения в Vkontakte

в 6:41, , рубрики: Вконтакте, Вконтакте API, Социальные сети и сообщества, метки: ,

image Есть такая оффлайн новогодняя игра "Тайный Санта". Уже давно играю в нее со своими друзьями на каждый Новый год.
Что бы проще было определять, кто кому дарит подарок, создал сайтик, где мои друзья могли оставить Email, и им на почту пришел бы результат генерации.

И года 4 назад задумался над созданием такого приложения для соц сети. Было бы гораздо проще приглашать друзей в контакте, чем кидать ссылку на сайт. Хотел сделать на флеше, но его за 4 года, так и не начал изучать. Поняв, что ждать больше нельзя, создал iframe приложение.

Запуститься я планировал первого декабря. Как раз люди начнут задумываться над тем, где и с кем праздновать Новый год, и как его весело провести. Теперь понимаю, что нужно было запускаться на недели 2-3 раньше. Может и на месяц.

Итак, приступил к работе

За основу взял фреймворк Yii. Его я более менее хорошо знаю, плюс с ActiveRecord все очень простенько делается. Так как сложной логики со сложными JOIN в приложении не планировалось, и я весь функционал вынес в JavaScript(в том числе и API запросы к контакту), то и особой нагрузки на приложение не планировалось. Так что можно было немного полентяйничать. Тем более что приложение, по сути своей, «умрет» после Нового года, а при возможной, резко возросшей нагрузке, на пару недель я смогу позволить себе сильный сервер.

Времени у меня был месяц, поэтому многое из задуманного я не успел реализовать. Оставлю это на следующий Новый год.
Так как в угоду дедлайяна я урезал маловажные функции, то у меня получилось довольно маленькое приложение.
Все запросы к БД — это достать список людей, участвующих в событии.
Из API Vkontakte я тоже использовал только «Получить список друзей текущего пользователя» и «Получить информацию о пользователях по списку ID»

Крупный недосмотр в логике

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

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

Решил я это проблему добавлением проверки последних 2х элементов.
На предпоследнем пользователе смотрим, если в массиве для распределения им есть последний пользователь, то предпоследний дарит последнему. Таким образом, последнему никогда не достанется он сам. Его заберет предпоследний. А так как массив изначально был перемешан, то распределение будет случайным.

Релиз

Проработав все выходные и вечера в ноябре, 30го я закончил работу над приложением. Дедлайн был практически соблюден. Оставил публикацию приложения на 1е декабря, и лег спать. Утром, отправляя на модерацию, я проверил все настройки приложения и сервера. В настройках заметил один пункт, на который раньше не обращал внимание: «Адрес сайта» с http и https. А сертификата то у меня и нет. Как его покупать и ставить, я понятия не имел.
Мои действия для решения проблемы:

1) Google;
2) 1300 рублей на покупку сертификата;
3) 1,5 часа в попытках поставить сертификат и настроить Apache;
4) 300 рублей знакомому админу и 5 минут настройки под это дело nginx-а;
Все работает.

Тем, кто не в курсе, самый простенький сертификат можно быстро купить и быстро настроить.

Модерация.
С технической стороны все вроде готово. Отправляю на модерацию вечером воскресенья.
Отвечают довольно быстро, но ответ неутешителен:

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

Как же не обязательно? А прием оплаты? Ведь без возможности монетизации рука не поднимется много вкладывать в раскрутку приложения. А с монетизацией хоть оправдание для самого себя(или больше для жены) будет. Мол, не просто так деньги трачу, можем заработать еще.

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

Извините, отвлекся. Итак, формулировка «Недостаточная функциональность приложения». Что же это такое? Попросил разъяснить.
Разъяснили:

К сожалению, мы не даем более подробных комментариев по изменению или улучшению функциональности приложения.

Начал гуглить. Понял, что я не первый такой, но как-то, это не сильно меня утешило.

Взглянул на свое приложение еще раз, и действительно, что видит человек, зашедший в приложение: Кнопку «Создать встречу», и уже созданную по умолчанию встречу, ну и симпатичную фоновую картинку.

У бедных модераторов, скорей всего, нет ни времени, ни желания вникать в суть игры/приложения. И, наверно, это правильно. Это можно использовать как критерий оценки юзабильности приложения. Если модератор не понял, то, наверное, и пользователь не поймет. Нужно что-то менять.
Вынес немного функционала на главную страницу, дополнил разделом «помощь».

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

Приложение внесено в список одобренных.

Теперь осваиваю рекламные механизмы контакта. Но об этом в следующей статье, статье подведения итогов работы новогоднего приложения.

Ошибки и выводы:

Ошибка: 4 года хотел сделать приложение, а начал делать за месяц до запуска.
Вывод: Начинайте делать, как можно раньше. По-любому будут нюансы, которые повлияют на дату запуска проекта. Да, много об этом пишут, и говорят, но все равно все, все оставляют на последний момент.

Ошибка: Не взял в расчет время прохождения модерации.
Вывод: Я посчитал, что модерацию пройду сразу же. Не правильное ожидание. Если запуск моего приложения задержать на 2 недели, то уже не будет смысла его запускать. Так что, нужно было предвидеть возможные проблемы прохождения модерации. Как минимум, нужно было погуглить на этот счет.

Ошибки: Не подумал о механизмах рекламы приложения.
Выводы: Тут наверно, у меня просто мало опыта. Получилось так, сделал приложение, одобрили, и что дальше?
А были бы уже подобраны рекламные площадки, были бы какие-то договоренности. Да хотя бы рекламные посты были бы заготовлены, было бы легче.

Конечно это не все мои ошибки, но это самые основные.
Всем удачи.

Автор: nProfessor

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js