Трибуна
Дмитрий
1616

Refl.Me — сообщения и оповещения через JSON

История о решении специфичной проблемы клиента и создании приложения для всех.

В закладки

Идея

Всем привет! Буду краток в изложении.

В нашей жизни есть много короткой и важной информации (баланс, статистика, статус). Для получения такой информации можно традиционно использовать электронную почту, SMS, push-уведомления или создавать ботов для одного из многочисленных мессенджеров. Эти варианты не подходили мне и моим клиентам.

Требовалось необычные ключевые особенности:

  • Работа напрямую с веб-сервисом через JSON.
  • Все должно работать без регистраций и любых личных данных.
  • Минимум кода для разработчиков и простое подключение для пользователя.
  • Минимальная стоимость подключения и дальнейшей поддержки.
  • Быстрый ввод источника через QR-код.

Начались поиски подходящего решения в Google Play и App Store. К сожалению и удивлению, ничего готового и удовлетворяющего требованиям клиента не нашел.

Решение

В этой ситуации я принял решение получить новые знания, потратить часть свободное время и создать приложение самостоятельно. Название выбрал Refl.Me (сокращение от reflection).

Итак, Refl.Me — приложение, которое позволяет легко и безопасно получать краткую информацию (сообщения или уведомления) непосредственно от веб-сервисов на мобильное устройство, используя JSON.

Приложение работает без сторонних серверов. Без регистрации. Не требует личные данные.

Монетизации нет, приложение бесплатное.

Продвижение

Для продвижения решил пойти путём публикации новости о приложении в стандартные для стартапов ресурсы.

По итогу размещения:

  • Medium: эффект минимальный, почти нулевой.
  • Reddit (в подходящих каналах): пошли первые пользователи, количество установок минимально.
  • Betalist: достаточно быстро прошел модерацию, приложение попало в Tranding Startups. Пользователи скачивали приложение намного более активно, чем после Reddit. Появилась первая обратная связь. Это дало понимание, что можно двигаться дальше и люди принимают приложение положительно.
  • Hacker News: Это 💣. Новость вызвала активное обсуждение и попала в топ-10 новостей на главной странице Hacker News, что дало более 10 тысяч переходов, множество установок и хорошую обратную связь от пользователей.
  • vc.ru: сейчас проверим эффект.
  • Habr и PH: планирую размещение в ближайшее время.

Итог

Более 23 тысяч переходов, 450 установок на Android и 350 заявок на iOS версию за семь дней. Считаю, неплохо.

Надеюсь, потратил ваше время не зря. Всем спасибо и удачи!

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Дмитрий", "author_type": "self", "tags": [], "comments": 42, "likes": 16, "favorites": 48, "is_advertisement": false, "subsite_label": "tribuna", "id": 90505, "is_wide": false, "is_ugc": true, "date": "Thu, 31 Oct 2019 02:07:40 +0300", "is_special": false }
0
{ "id": 90505, "author_id": 332604, "diff_limit": 1000, "urls": {"diff":"\/comments\/90505\/get","add":"\/comments\/90505\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/90505"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199116, "last_count_and_date": null }
42 комментария
Популярные
По порядку
Написать комментарий...
9

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

Ответить
0

Благодарю за отзыв. Приложение специфическое. Обычному веб-пользователю оно мало интересно.

Ответить
2

Я не обычный веб пользователь, но мне все равно ничерта не ясно!

Ответить
0

Евгений, что именно не ясно? Формируете источник данных в JSON на стороне своего веб-сервиса, приложение с заданной периодичность проверяет источник, получает необходимые данные и формирует оповещение. Все это работает напрямую без использования сторонних серверов\сайтов. 

Ответить
1

«Формируете источник данных в JSON на стороне своего веб-сервиса, приложение с заданной периодичность проверяет источник, получает необходимые данные и формирует оповещение. Все это работает напрямую без использования сторонних серверов\сайтов» 

- Хорошо, что начали создавать свое «шедевральное» решение с Android-а. В AppStore вас точно не пропустят с таким «решением». Чтобы такое приложение работало в фоне на Android-е нужно создавать фоновый сервис. На IOS-е вам никто не даст такое сделать – там есть строгое условие (с iOS 13 еще сильней зажали гайки) использовать только PUSH-уведомления!!! Через месяц-два использования такого приложения в своем Android-смартфоне придется менять батарейку на телефоне. Вы предупреждаете пользователей об этом?

Ответить
1

Я утром установил это приложение. Сейчас проверил потребление. Все в пределах разумного.

Ответить
0

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

Ответить
0

Не благодарите!
Тут 90% пользователей мало разбираются в мобильной разработке. А для тех, кто немного разбирается или хотя бы являются владельцами мобильных приложений в сторах – ваше приложение — это полный бред! Это – как деление на 0! Понимаете? 

Про энергопотребление вы написали: «В приложении оптимизировано энергопотребление. При 10 источниках в сети wi-fi потребление близко к стандартному мессенджеру (типа WhatsApp).» - это тоже полный бред! Viber/WhatsApp и ВСЕ другие уже более 2-ух лет не используют фоновые сервисы! 

 Феномен вашего приложения только в том, что «Вы попали на 4 строчку Hacker News»! Это значит, что пользователи Hacker News уже далеко не «Hacker’s» 

Ответить
1

Он же не сказал, что у ватсапа фоновые процессы. Он написал, что ПОТРЕБЛЕНИЕ ЭНЕРГИИ на уровне мессенджеров

Ответить
0

Что ТС мешало написать, что уровень ПОТРЕБЛЕНИЯ ЭНЕРГИИ значительно ниже, чем у других приложений-мессенджеров? Если утверждения не основываются на знаниях или опыте, то можно написать, что это чудо-приложение заряжает батарею! Не один я тут писал, что это приложение будет безбожно «жрать» батарею! 

Может быть, компания Apple для вас в авторитете? Они даже не предоставляют инструментов для разработки таких приложений. Любое свернутое приложение на iOS моментально прекращает свое выполнение в фоне (поэтому на iOS-е не имеет смысла закрывать приложения «крестиком»), а «самописных» фоновых сервисов на iOS-е просто НЕТ! 

На Android-е любое свернутое приложение прекращает выполняться в фоне через 20-30 минут. Новые FireBase.PUSH.HTTP_v1_API (пуши для Android) прекрасно «будят» любое приложение без использования фоновых сервисов, т.е. уже совсем не отличаются от APNs (это пуши для iOS). Следующим шагом для Android будет полный запрет на «самописные» фоновые сервисы.  

Ответить
0

Икс, пора уже прекращать строчить повторные однотипные утверждения о фоновых сервисах, батарейке и пушах для пробуждения(!), все уже Вашу позицию услышали. Андроид позволяет (как минимум) из коробки реализовать фоновые ЗАДАЧИ, которые каждые 15 минут будут запускаться. Зачем мне пуши для пробуждения, если они мне нужны и есть готовое решение? Очередной раз, удачи!

Ответить
0

А ваши утверждения основываются на опыте? Вы установили приложение, добавили 5 источников и тестили 8 часов? Нет? Ясно-понятно.

Ответить
0

Во-первых, на iOS нет крестика, чтоб закрывать программы. Во-вторых, мы тут как бэ андроид приложение обсуждаем

Ответить
0

*"фоновые сервисы"? Может фоновые задачи?

Маск, не говорите за других пользователей, да еще и в высоких процентах ;)

Ответить
0

С вами все ясно... JobIntentService назывался для старых версий Android. В новых это уже никто не использует.
https://github.com/Euzee/serviceManagerExample

Ответить
0

Что ясно? А что нужно использовать для "работы в фоне" по-вашему мнению? 

Ответить
0

C Android 8.0 (API level 26) вас ждут существенные ограничения на использование таких сервисов: https://developer.android.com/about/versions/oreo/background.html и не исключено, что скоро, сервисы, которые убивают батарею совсем запретят (например, как в iOS-е)

Ответить
0

Приложение соответствует всем этим правилам и ограничениям. Работает.  Что еще нужно?

Ответить
0

В представленном виде, ваше приложение или неработоспособное (если без сервиса) или убийца батареи! Может, для теста и проверки идеи – это самое правильное решение. Быстро сделали, чтобы проверить идею – молодец! Если будет спрос или решите делать под iOS, то переделаете все это добро через PUSH-уведомления и будет счастье :) Удачи в развитии! 

Ответить
0

Я не понимаю ваше утверждение "неработоспособное (если без сервиса) или убийца батареи". Как неработоспособное, если люди его используют. Что значит убийца батареи, если жалоб нет :) Я соглашусь в одном, что если добавить 100 источников с частым обновлением, то батарею будет жрать активно. Это логично. С iOS нужно будет решать иначе, тут согласен.  Спасибо за напутствие и дискуссию :)

Ответить
–1

В этом «произведении искусства» весь расчет только на тех пользователей, кто ничего не понимает :) И на тех пользователей, кто читать не умеет :))) т.к. в строке уведомлений будет постоянно висеть надпись: «Найдено энергоемкое приложение! Нажмите, чтобы удалить его прямо сейчас!»

Ответить
0

Вы поставили приложение? Проверили? Поверьте, если такая проблема была, мне бы точно сообщили ;) 

Кто ничего не понимает, приложение и не поставят т.к. не понимают зачем оно нужно. 

Ответить
0

Вам просто не сообщили :) Если у вас «крутится» фоновый сервис, то такая проблема будет! Если у вас нет фонового сервиса, то при закрытом приложении никаких проверок оно осуществлять не будет! Чтобы понимать такие очевидные вещи мне не нужно устанавливать ваше приложение. Мне еще нужна моя батарейка на телефоне :) 

Ответить
0

Что значит не сообщили? Более 20 устройств использовалось до публичного доступа у меня на глазах. Используется WorkManager с небольшими изменениями, никаких проблем с батареей и фоновыми задачами.   

Я думаю эту дискуссию можно остановить, это не Хабр, здесь это никому не интересно ;)

Ответить
2

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

Ответить
0

Дмитрий, откуда негатив? В приложении оптимизировано энергопотребление. При 10 источниках в сети wi-fi потребление близко к стандартному мессенджеру (типа WhatsApp). Максимальное потребление появляется в мобильной сети при отсутствии сигнала, что логично. 

Ответить
1

Попасть на 4 строчку Hacker News это удача.

Ответить
1

Спасибо. Просто приложение вызвало интерес для обсуждения :)

Ответить
1

Сегодня дал задание разработчикам, попробовали. Понравилось.

Ответить
0

Спасибо. Пишите, если будут вопросы или предложения. 

Ответить
1

Крутая штука, давно думал о подобном. Еще предлагаю добавить обратную связь, как кнопки в ботах телеграма.

Ответить
0

Максим, благодарю! Мысль с кнопками была, но это сильно усложнит простую идею ) Как видите по комментариям, не всем вообще идея по душе :)

Ответить
0

Прочитал и не понял, нужно ли это приложение обычному человеку или это сугубо профессиональная и узконаправленная тема

Ответить
1

Обычному человеку скорее не нужно :) Основные пользователи на текущий момент: веб-разработчики и их окружение.

Ответить
0

Переизобертаем webpush? Android уже поддерживает, для этого не нужно ставить никаких приложений. Касательно ios думаю что тоже скоро подвезут поддержку, на десктопе добавили. И как только это добавят, появится вопрос - зачем ваше и без того непонятное приложение? :)

Ответить
0

Павел, 
REFL.ME работает напрямую с веб-сервисом через JSON, а push-уведомления это целый пул технологий включая сторонний сервер + реализация сложнее. Для всего есть свое применение. Все кому нужно, ставят это "непонятное" приложение и используют :) 

Ответить
3

Я насколько понимаю чтобы веб сервис работал с REFL ему нужна интеграция, в чем проблема интегрировать любой webpush сервис коих сейчас просто тьма, и многие абсолютно бесплатны, рекламу им давать не буду. Реализовывать, в случае с интеграцией, тоже ничего не нужно, есть API, при этом поддержка пушей "из коробки", без установки левых приложений. Касательно статистики установок и использования - это мнимое ощущение того что "взлетит", ставят чтобы глянуть и попробовать, потому что ничего не понятно, но очень интересно. Время покажет нужен ваш сервис или нет

Ответить
0

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

Ответить
0

Я тоже не понял, что конкретно делает приложение и в каких случаях его можно использовать? От каких "веб-сервисов"  можно "легко и безопасно получать краткую информацию (сообщения/уведомления)" - своих или чужих? Требуется ли знание разработчика, чтобы настроить эти уведомления?  Как вообще настраивать получение уведомлений?

Ответить
0

Приложение позволяет получать сообщения и оповещения без "посредников" т.е. напрямую от веб-сервисов . Получать можно от любых веб-сервисов, которые подготовили соответствующий JSON ответ. Формат ответа сделан максимально  простым, структура описана на сайте. Для получения сообщений и оповещений: скачайте приложение, добавьте подготовленный JSON источник (укажите по ссылке) и все. Тестовые примеры есть на сайте.

Ответить
0

Как вы интегрировались со своим банком, чтобы получать баланс, без авторизации и по json? На скрине видно баланс счета.

Ответить
0

Василий, это был тестовый источник. Не думаю, что банкам это приложение интересно, хотя проблем отображать баланс не вижу. Сделать авторизацию в упрощенном виде  возможность есть (посмотрите документацию). 

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }