Pull to refresh

Реализация идеи подписки не на человека, как в твиттере/инстаграме, а на место

Reading time 4 min
Views 2.8K
Повествование реализации тривиальной идеи получать свежие изображения (на самом деле не только свежие и не только изображения), сделанные в определённой географической локации. Это могут быть места, где вы жили, где живёт кто-то близкий, просто интересно следить за запусками ракет на Байконуре или мысе Канаверал, что угодно, на самом деле, фантазии (и любопытству) нет предела.

Итак, какое-то время назад я заскучал по родным местам и решил посмотреть «как там» через существующие веб-камеры. После чего пришло неминуемое разочарование от их очевидного отсутствия в дорогих мне местах. Через незначительное время я подумал, а почему бы не поэксплуатировать эту идею, так как я уверен, что таких желающих «заглянуть» должно найтись немало. Я даже предположил, что что-то подобное должно уже существовать и после непродолжительного поиска действительно нашёл два проекта, близких по смыслу, но ни один из них меня не устроил. После этого момента прошло долгих 3 года. И вот, спустя 3 года, у меня нашлось время для собственной реализации. Надо сказать, что за это время я естесственно успел поделиться своими размышлениями со своими друзьями «за чашечкой». И общение с ними меня уверило в том, что вот если бы такая система существовала, то ею бы непременно пользовались, как и сам я. За эти три года меня разрывало двойственное чувство, что вот-вот кто-то реализует идею и я просто-напросто начну этой реализацией пользоваться и это здорово, а с другой стороны, я бы немного расстроился, так как я и сам хотел бы сделать свою реализацию. И вот момент настал.
Так как я являюсь адептом ондроед-лагеря, выбор пал на android и android-studio. Впрочем, версия под ios тоже в разработке, но по моим прикидкам, результат появится никак не раньше, чем к осени. Это мой первый проект, как под андроид, так и в android-studio. Так что пришлось потратить дополнительное время на копание в соответствующих доках.
В настоящий момент готов т.н. proof of concept. Front-end, как я сказал, реализован пока только под андроид, back-end реализован средствами Google Cloud Storage, Google Cloud Messaging, Google Cloud SQL.
Остановлюсь поподробнее на самой идее. Итак, я представил среднего пользователя, которому хотелось бы заглянуть, к примеру, в город Барселона, где он недавно, а может быть и давно, отдыхал. Для этого он идёт в маркет (о маркете чуть ниже поподробнее), скачивает приложение, запускает, фильтрует фотографии по месту и времени, и видит, что гостиницу снесли, ну или что угодно еще, но принципиальный момент, что он получает то, зачем он всё это, начиная с установки приложения, предпринимал. Очевидно, что для того, чтобы система работала, в ней должны присутствовать эти самые фотографии со всего мира. И для этой цели служит одно маленькое, но очень важное требование. А именно, чтобы зайти в систему он должен сделать фотографию в том месте, где он сам «здесь и сейчас» находится (хоть из окна офиса или машины, неважно). Сделанная им фотография в тот же момент (на стороне бекэнда) оповестит всех, кто подписан на данную область. Чтобы избежать, как я их назвал dangling notifications (когда два человека из двух городов подписаны на город второго и вынуждены делать фотографию вновь и вновь, так как не перестают получать уведомления), сделан выбор при подписке на область, как часто получать уведомления из этой области. Доступные варианты — не чаще, чем раз в минуту, в час, в день, в неделю.
Помимо прочего я решил ослабить важное требование делать фотографию каждый раз, когда человек запускает приложение (либо при получении оповещения, либо по собственной инициативе). Для этого при регистрации добавляется пять т.н. пропусков, когда можно просто ответить «в следующий раз» и получить доступ к карте и всем маркерам на ней. Если человек решил таки сделать фотографию на старте, то ему добавляется три новых пропуска. Само собой они аккумулируются и в идеале при получении уведомления человек никогда не будет вертеть головой в офисе в размышлениях, где бы ему к окну подойти, а просто-напросто пропустит в этот раз предложение о съёмке и посмотрит, а что же такого интересного ему пришло.
Проект делал примерно месяца два и, если учесть, что это мой первый опыт, то не так уж и долго. Честно говоря, если бы я сейчас сел делать то же самое, то сделал бы раза в 4 быстрее, это и понятно. По поводу маркета. Так как я ощущаю существенный недостаток в пользователях, я решил, что проект никоим образом не готов к маркету, поэтому я решил приглашать людей по ссылке и обновлять программу автоматически на старте, если доступно обновление. Да и, как я сказал ранее, это всё же proof of concept, так я к клиенту под android и отношусь. Возможно, с учётом всех пожеланий, приложение просто-напросто будет переписано «с нуля», чтобы быть достойным маркета (как минимум, в моих глазах).

Скачать приложение можно на GooglePlay

Несколько пояснений:
1. Все проблемы «вёл» в trello, действительно полезный сервис. Буквально «на ходу» добавлял баги/идеи и, начиная работать, открывал свой борд и работал над всем, что добавлено. На настоящий момент накопилось много идей, которые в ближайшем будущем будет относительно несложно добавить. Но всё решают приоритеты, каковыми в настоящий момент я считаю работу над версией для ios и исправление багов. Также для получения отзывов набросал форум, где можно оставить свои замечания, предложения, вопросы (для удобства — на английском и русском языках). Форум.
2. Интерфейс программы весь на английском языке, ни для кого на Хабре это не проблема. Хотя перевод тоже в списке To do.
3. instagram добавил поиск фотографий по месту (а может быть и не только instagram). Но до тех пор, пока я не узнаю, что на рынке существует серьёзный игрок, предлагающий подписку «по месту», я буду продолжать работу над проектом. Кстати, это хобби, пилить могу бесконечно, даже если реализация идеи появится, но мне не понравится.
4. Знаю и люблю сервис google streetview, но в теории мой проект должен заглядывать в «недоступные» для google streetview car места, как, собственно, и гораздо чаще, чем streetview обновляется.

UPD
Добавил screenshots:
image
image
image
image
image
image
image
image

UPD2
Прошу прощения, если подача материала показалась непрезентабельной. Я не писатель и с удовольствием приму замечания по оформлению. Хотя любопытнее было бы выслушать размышления по поводу идеи, конечно.

UPD3
Опубликовал на GooglePlay
Tags:
Hubs:
-3
Comments 9
Comments Comments 9

Articles