Сообщения и оповещения на Android через JSON

Для получения коротких сообщений, можно использовать электронную почту, SMS, push-уведомления или создать бота для мессенджера.

Предлагаю рассмотреть еще один простой способ:

1. Создаем на стороне веб-сервиса источник данных в JSON.

{
        "refl.me":true,
        "message":"Hello!",
	"refresh":96
}

«refl.me» указываем обязательно true.
«message» задает текст сообщения, пустые сообщения игнорируются.
«refresh» задает, сколько раз нужно проверять источник в течении 24 часов (0 — ручное обновление, 288 — максимум).

<?php
        header('Content-Type: application/json');
        $json_array =array('refl.me'=>true,'message'=>'Hello!','refresh'=>96);
        echo json_encode($json_array);
?>

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

3. Все готово. Получаем оповещения и сообщения.

Принцип работы предельно простой, приложение проверяет источник в соответствии с заданными интервалами (или в ручном режиме), если значения «message» изменилось на отличное от предыдущего значения, отображается оповещение в приложении.

Все работает без сторонних серверов, не требует личные данные и регистрацию.

Полная документация здесь.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 43

    +2

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

      –2
      Задача стояла работать без использования «пушей». Есть задача, есть решение. По батарейке — популярное опасение. Потребление оптимизировано. При разумном использовании, все укладывается в потребление близкое к стандартным мессенжерам. «Отжирать» батарейку будет хорошо, если использовать мобильный интернет в «глухом» месте с постоянными разрывами связи + множество источников с частым обновлением. Это все логично.
        +1
        о, крайне профессиональное решение! особенно детально раскрыт вопрос выживания в doze mode, да и вообще гарантированной доставки!

        пережить выдавливание из памяти? AlarmManager, ForegroundService, а то, так и вообще WakeLock. ачотакова?! Не перевелись еще костыли… «есть задача, есть решение»

        // sarcasm mode off

        Кстати, хотя бы один аргумент в пользу того, почему я захочу доверить свои данные какому-то товарищмай refl.me?
          +1
          Если // sarcasm mode off, тогда может подскажешь решение для оперативного получения оповещений на Андроид? Обязательно без использования «сторонних» серверов. С удовольствием буду пользоваться, если есть хорошее и удобное решение.

          Кстати, хотя бы один аргумент в пользу того, почему я захочу доверить свои данные какому-то товарищмай refl.me?

          В этом смысл и аргумент, что данные не хранятся у refl.me. Работает все напрямую веб сервис-мобильное устройство.
            +1
            > данные не хранятся у refl.me

            их получает стороннее приложение с android.permission.INTERNET. что там дальне происходит — большая загадка.
              +1
              … предлагаете удалить android.permission.INTERNET? )))
                –1
                Слона ребят в вопросе секретности вы не заметили.
                PHP скрипт на сервере лежит без авторизации.
                Вся защита на том, что его URL якобы никто не знает ;)
                Мне из броузера на него никогда не заходить?

                Данные не шифруются, от человека по середине уповаем на https?

                  +1
                  Если нужно, есть возможность простой аутентификации пользователя. Посмотрите доки. Данные не шифруются. Хотя, я подумаю об этом в будущем.
              –1

              Оперативное – таки через сторонние сервера (push).


              Безопасность можно обеспечить отправкой данных в зашифрованном виде или же не отправлять сами данные, а лишь сигнал об их приходе (т.е. тот же ваш poll выполняется не каждые 5 минут, а лишь при приходе push).


              Надёжность от отключения гугловских серверов :-) — оставив всё-таки poll с достаточно большим интервалом, чтобы при отказе гугла сервис деградировал, но не отключился. Но imho нет смысла.

                +1
                Я уже писал, нельзя использовать сторонние сервера, а работать нужно… такая жизнь в рамках ТЗ.

                Отправлять «push» для частых «пробуждений» в данном случае — экономия на спичках, лишняя логика и опять использование стороннего сервера. Хотя, не отрицаю, возможно это имеет смысл.
                  0

                  Сочувствую. Военный заказ, что ли?


                  Нельзя сторонние сервера + нет входящих соединений – кажется, остаётся только poll или long poll (умеете?) в зависимости от задачи, да.

                    +1
                    Нет, просто своеобразные требования. Считаю, long poll здесь не нужен, данные слишком короткие, а промежутки обновления достаточно большие.
              +1
              пережить выдавливание из памяти? AlarmManager, ForegroundService, а то, так и вообще WakeLock. ачотакова?!

              А иначе выживать в Doze Mode только при помощи неуправляемого процесса, как это OrBot делает.
              Предлагаете «средствами выживания» вообще не пользоваться?
                0

                Ну если сильно надо, то все эти проблемы решаются. Но какой ценой… За такие решения я не удивлюсь если в трояны запишут) Я имею в виду решаются без WakeLock и ForegroundService. Чисто фоновым сервисом.

                0

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


                А потом начинается оптимизация. Потому что poll создаёт массу проблем (например, раз в 5 минут ваше приложение должно работать – вытесняя из памяти более ценные).

                  0
                  Пусть базовая, база это вообще хорошо. Готовое аналогичное решение есть похожее по простоте и удобству? Я не нашел в «сторах». При реальном опыте эксплуатации не вижу никаких «масс проблем», как и другие пользователи. Если есть желание, попробуйте сами (только с позитивным подходом и настроем).
                    0

                    В npm наверняка есть, там даже leftpad был :-)


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


                    Готовое решение практически неизбежно обрастёт наворотами.


                    ЗЫ: я бы ваше решение предложил развить до цепочки туториалов от простейшего (poll) до push + навороты.
                    Ну типа задача – решение – какие проблемы – решение посложнее – ...

                      0
                      Я подумаю над предложением! Мыслей много, нужно выбрать путь… ;)
              –3
              Готовитесь на случай окончательного суверенитета рунета?
                +1
                Смех смехом, но работает и востребовано.
                  0
                  Это не смех. А единственное достоинство решения.
                  Которое как я понимаю получилось из ТЗ.
                  Работать без промежуточных серверов.

                  А вот все остальное, что работает экономнее и быстрее в ваше тз не вписывалось.
                  Послать с сайт уведомление
                  через телеграмму — это один curl запрос (и 10-30 минут на внедрение)
                  через веб пуш — 1 вызов метода из библиотеки (несколько часов)

                    +1
                    Приложение нашло часть «своих» пользователей. Значит интерес есть. США, Индия, ЕС основные пользователи сейчас.
                      0
                      «своих» пользователей может найти любое приложение.
                      Вот его исходники
                      github.com/402d/TextToPrint
                      Вот статистика за 15 месяцев
                      photos.app.goo.gl/T1CqkWhxNCmkMnD56

                      Все дело в том, что их маловато как-то получается ;(
                        0
                        А почему пошел резкий спад установок?
                          0
                          ноябрь только начался (последняя точка)
                          а в октябре я поменял название на более длинное.
                          По предыдущему «Текст на Печать» слишком много от него ожидали пользователи.
                          Т.е. пусть меньше, но не стирают сразу и не пишут разочарований в отзывы.

                          Описание ведь никто не читает. На скриншоты не смотрят.
                          Прочитали и думают, что тут универсальный драйвер под все принтеры
                          0
                          Ребят, кто мне чашечку кофе подарил?
                          Поделюсь тогда результатами эксперимента монетизации приложения через донат.
                          90 баксов за время существования.
                          Из разряда абсурда. Не читают за что платят. Пару раз просили возврат, так как считали, что за этим пунктом (купить мне чашку кофе) скрываются какие-то супер возможности приложения.
                  –3

                  Это типа пример из учебника по php для пятого класса?

                    +2
                    Комментарий звучит как похвала. Значит код действительно простейший.
                      0

                      Угу, а теперь возьмите свою разработку, запустите, залочьте телефон и положите на полку на часок. А через часок попробуйте отправить пуш этим методом.

                        +1
                        Угу, могу не только положить, могу перезагрузить, оставить на часок не запуская приложение «по иконке» и все будет работать. Вы реально думаете, что никто не проверил основные моменты работы? И причем тут вообще «пуш»?
                    0

                    Может тогда лучше отправлять на email письмо, а почтовое приложение на телефоне получало бы своевременное уведомление. Тогда и ставить лишнего ничего не нужно

                      0
                      Каждые 5-15 минут письмо от 5-6 источников со свежими данными? Почта не лучший способ оперативно получать информацию.
                        0

                        И тот и другой варианты все равно костыль

                          0
                          Костыли бывают разные, удобные и нет, подходящие для решения задачи и нет.
                      0
                      Буду крайне благодарен, если выложите в паблик сырцы, для ознакомления с реализацией и возможной модификации решения под себя.
                        0
                        Опасение о разряде аккумулятора всё-таки есть и не на пустом месте. Что Вы использовали для того, чтобы держаться в фоне? AlarmManager? WorkManager? Foreground Service? Sync Service? Или его вообще ничего не держит?

                        «Отжирать» батарейку будет хорошо, если использовать мобильный интернет в «глухом» месте с постоянными разрывами связи + множество источников с частым обновлением. Это все логично.
                        Нет. В Вашей ситуации потреблять батарею будет быстро, если не давать устройству переходить в режим сна и снижать частоты ядер SOC. По сравнению с этим радиомодуль расходует на 3g-4g вообще копейки.

                        Подобным способом (polling) работает со сторонними ящиками клиент GMail, но он разрешает синхронизацию не чаще, чем раз в 15 минут и при этом еще ее откладывает если устройство находится в глубоком сне. На этом фоне запросы раз в 5-6 минут вызывают очень большие опасения.
                          0
                          Как «база» используется WorkManager. Кстати, кол-во обновлений вы задаете сами на стороне веб-сервиса, многие данные не требуют обновлений каждые 5 минут. Попробуйте, запустите и посмотрите энергопотребление в конце дня (тестовый источник создавать не нужно, «демо» есть в приложении). У меня «Телега» в фоне «съедает» гораздо больше, хотя я ей не пользуюсь.
                          +1
                          На телефоне нету гуглосервисов и пуши не работают. Нормльное решение для такого случая, как-то искал нечто подобное и ничего не нашел.

                          PS. Так как приложение будет особенно полезно тем, у кого нет гуглосервисов, было бы неплохо иметь возможность скачать apk файл прямо с сайта, а не из плеймаркета.
                            0
                            Спасибо. Выложить apk нет проблем. Хотя в интернете есть множество сайтов, которые дублируют apk с «гуглмаркет» достаточно оперативно. Поэтому, не знаю, нужно или нет.
                              0
                              Нужно. Мне вот нравиться одно приложение. И в маркете его уже нет. В сервисах, оно тоже исчезает. Свое тоже не буду выкладывать в маркет, а буду отдельно распространять. Слишком нишевое решение.
                              –1

                              Еще неплохо было бы иметь возможность ввести код приложения в машинных кодах прямо в память, на случай если нет возможности скачать apk файл и установить его (интернета на телефоне также может не быть)

                              0

                              Пользуюсь подобным приложением, в сторах называется "Any widget", я так понял — это тоже отслеживание только последней информации?

                                0
                                Не видел ранее это приложение. Принцип работы возможно схожий. Попробую. Благодарю за наводку!

                                upd: Поставил. Приятное приложение. Приложения похожие, но отличаются назначением. Как я понимаю, any widget не создает оповещений и не отслеживает изменение данных в фоне, только отображает текущее состояние находясь в приложении.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое