mee2. iBeacon в социальных сетях

Здравствуйте хабравчане.Недавно на TechCrunch вышла статья про стартап MingletonКак ни странно, но мы еще в конце прошлого года запустили нашу версию похожего приложения и хотели бы немного о нем рассказать.Идея Идея возникла случайно, я ехал на эскалаторе в метро и на встречном увидел симпатичную девушку, мне стало интересно, как я могу с ней познакомиться, с учетом того, что я не очень хочу перепрыгивать, кричать и махать руками. Ответ нашелся быстро.Нужно построить путь каждого пользователя, как это делают приложения типа: runkeeper или moves, и найти пересечения этих путей.image

Сразу вспомнилась проблема, знакомая многим автомобилистам, когда в пробке в соседней машине встречается симпатичная девушка. Или «помогите найти девушку, что сидела вчера в кафе. Я не подошел, теперь жду ее каждый четверг в этом кафе с 18 часов».

Команда Команда собралась быстро, если не сказать сразу. Рассказав идею друзьям, решили встретиться в ближайшие выходные, все обсудить. Идея понравилась. В команду вошли: мощный фронтэнд в лице Мингалиева Тимура (unspecified), крутой iOS-разработчик Марк Трубников (mtrubnikov), опытный менеджер продукта Иван Левченко (Иван Левченко) и я asidorov.Версия 0.1 В первой версии приложение должно было показывать карту с сегодняшним маршрутом и отображать на ней людей, которых видел, пока ехал на работу.Часы обсуждений, литры кофе дали свои плоды. Поскольку в таком приложении главное не карта, а люди которых ты встречаешь, решили показывать только людей, карта — вторична. Была придумана масса «фишечек» и возможных улучшений. Работа началась.

Разработка началась с радара, который по факту занимался «отслеживанием маршрута» в стиле «Moves». На сервер отправлялись «точки» или «группы точек»(если нет интернета), по этим точкам на сервере строился маршрут, рассчитывались «пересечения» маршрутов.Серверная часть была на Python/Django, СУБД — PostgreSQL с модулем PostGIS для работы с географией (кстати, очень мощная штука).

После сотен полевых тестирований радара мы пришли к тому, что его данные слишком приблизительные. Пересечением считались две точки, находящиеся на расстоянии до 150 м отправленные в плюс-минус пять минут.Графическое отображение точек, отправленных айфоном по пути домой (приложение в бекграунде), приводили в ужас, судя по этому маршруту я несколько раз переплывал пруд возле работы и ходил по домам. По такому маршруту сложно найти девушку своей мечты. Плюс к этому, добиться вменяемой регулярности отправки локации в бэкграунде после многочисленных экспериментов оказалось практически невозможно. В форграунде приложение работало хорошо, точки отправляются регулярно, но ходить со светящимся экраном никто не будет.Кроме того, у этого подхода был огромнейший недостаток — батарея разряжалась за считанные часы, а революции в телефонных батареях не планировались.

Версия 1.0 В сентябре Apple представили iOS7 и в очередной раз рассказали про свою технологию iBeacon. Мы поняли, что это то что нужно, iBeacon работает через BLE, который появился в Bluetooth 4.0, а значит не сажает батарею. iBeacon «видит» устройства на расстоянии 50 м, что для наших целей хороший показатель. Нет необходимости в расчете пересечений, их хранения на сервере. Приложение становится полностью автономным, сервер используется только для запроса данных пользователя.Публикация в AppStore Каждый из нас имел опыт в публикации приложений в AppStore, в большинстве случаев он был положительным, но в этом случаеревью был жестким. С момента заливки бинарников до выхода приложения прошло больше месяца, и несколько reject«ов.Обоснованность первого еще можно понять, речь шла об ошибках связанных с авторизацией через Facebook. Apple не понравился стандартное сообщение об ошибке, при неудачной попытке авторизоваться. Поправили, едем дальше.Обоснованим для второго reject«а было сообщение: «мы не смогли авторизоваться через Facebook». Было совсем не понятно в чем проблема, какие-либо подробности Apple отказались давать, выслав скриншот экрана авторизации. Мы проверили все возможные варианты авторизации (с подключенным в телефоне Facebook-аккаунтом, с приложением FB, без приложения, через webView), все работало. Слепо, наугад поправили какие-то мелочи. Отдали на ревью.Третий reject. «Мы не поняли как работает приложение, пришлите подробное описание или видео». С режиссурой у нас плохо, Спилберг отказался принимать участие, т.к. сценария не было. Сняли короткометражку своими силами: (https://vimeo.com/84288450).Четвертый reject. «Ваше приложение вылетает». Прислали краш-репорт, появилась хоть какая-то конкретика. Несколько часов мы сидели и не понимали почему не можем развернуть краши. Разобрались — это краши не к последней загруженной на ревью версии нашего приложения.Каждый запрос на ревью сопровождался недельным ожиданием, поэтому в четвертый раз мы относились к этому как к какому-то квесту, который нужно пройти, решили написать примерно следующее: «Здравствуйте, мы потратили несколько часов и 2 литра водки «Путинка», разбираясь с крашами что вы прислали, и пришли к выводу, что вы тестируете не последнюю, а предыдущую версию нашего приложения». Ответа от Apple не последовало, но статус поменялся на «Ready for sale». Победа! Мы в AppStore! Сейчас можно сказать, что приложение получилось похожим на то, о чем мы мечтали год назад.

А что сейчас: Сейчас мы находимся на стадии активного тестирования нашей платформы. На ее основе мы планируем построить полноценное социальное и одно бизнес-приложение.Приоткрою завесу тайны, мы занимаемся адаптацией этой платформы для конференций и по предварительной договоренности mee2 будет партнером на конференции InterSeliger.Мы будем крайне признательны, за ваше мнение в комментах или мне в личке.

Спасибо за ваше внимание, будем рады видеть вас в числе наших пользователей, объективных критиков и друзей. Встретимся в mee2!

Команда mee2: Алексей, Тимур, Марк, Иван

P.S. Если будет интерес о технических подробностях, нюансах работы iBeacon, можем написать отдельную, полностью техническую статью об этом.

© Habrahabr.ru