Каким образом?
Google Chrome начиная с версии 42 поддерживает Push API через сервера Google, используя GCM Вы наверняка уже видели эти запросы для доступа к уведомлениям. Если разрешить доступ, сайт сможет отправлять вам уведомления. Эта функция совсем новая, и о ней мало кто знает, однако, по моему мнению, у нее уже есть большие недостатки:
- Каждый сайт запрашивает разрешения в браузере, сложно контролировать, сколько источников сейчас могут присылать тебе уведомления, у каждого висит свой фоновый процесс, который отдельно просыпается, нет никакой истории полученных уведомлений или фильтрации, нет никакой синхронизации подписок между устройствами
- Сайтам необходимо отправлять уведомления напрямую на устройства, следить за актуальностью базы устройств, следить за каждым устройством пользователя в отдельности
- Данная возможность работает лишь на сайтах с SSL
Промежуточный сервис, который берет на себя все эти функции, может решить возникающие проблемы.
Немного теории
Основную статью по которой я собственно делал эту функцию можно найти тут
Если вкратце, то браузер создает Service-Worker (доступен с Chrome 40), это фоновый процесс на JS. Он не постоянно работает в фоне, а откликается на различные запросы извне. Например, на приход Push-сообщения. Конечно же, он не требует открытой страницы. Более того, он работает даже если браузер закрыт (ну не совсем закрыт, а в фоновом режиме.)
При приходе Push-сообщения, браузер показывает уведомления. Вот и все. Это позволяет полностью реализовать прием Push-уведомлений без каких-либо приложений, более того, это работает и на андроиде в мобильном хроме! Из явных недостатков можно выделить на данный момент то, что нельзя передать в push-сообщении полезную нагрузку, т.е. само сообщение. Google объясняет это проблемами безопасности, и сообщает, что в Chrome 44 проблема полностью решена и браузер сможет принимать данные напрямую. Также, по некоторым данным, если браузер был закрыт, то до него не дойдет запрос. Эта проблема решаема тем, что можно вывалить все уведомления, которые не были подтверждены при получении любого следующего сообщения.
Как PushAll решает проблему
Вы можете отправлять уведомления через Push API даже без сайта вовсе. То есть вы можете создать канал и отправлять уведомления вручную, либо с сервера через curl, либо подключив RSS-ленту. В данном случае пользователь разрешает доступ к отправке сайту PushAll.
При этом разработчику не надо задумываться кому он отправляет уведомление. На приложение под Android, на дополнение хром, или сразу через Push API. Он может отправить сообщение десятку пользователей, а на деле оно уйдет на каждое из 2-3 устройств каждого пользователя. В дальнейшем это будут и другие браузеры, и другие платформы, такие как iOS и WP.
Тестирование
Функция была написана буквально вчера и поэтому требуется тестирование.
Для теста уведомлений через Push API нужно зайти на сайт PushAll.ru и войти используя аккаунт Google.
Сразу после входа вы попадете в каталог каналов. Сверху справа есть переключатель, включающий новую функцию.
После включения, хром запросит у вас доступ к уведомлениям. После этого надо перейти в раздел профиля и «пингануть» устройство
Отпишите мне в личку, или в комментариях, как работают уведомления. У некоторых были проблемы с работой уведомлений, и мне хотелось бы исправить ситуацию. Также проверьте уведомления на вашем Android смартфоне. Как протестируете, думаю найдете парочку интересных каналов в каталоге.
Сразу, чтобы не было вопросов: не обязательно получать все уведомления с каналов. Подписались на канал, открыли его снова — окрыли фильтр, ввели ключевые слова. По тем тематикам, что вам важны в первую очередь уведомления будут приходить сразу на устройства, а остальное можете читать уже с самих сайтов (это относится к примеру, к каналу СоХабр или к каналам сериалов)
Перспективы
Данная функция позволяет охватить большую аудиторию пользователей. Многим сложно ставить приложение или дополнение, однако нажать пару кнопок не составит труда.
В дальнейшем я напишу специальный виджет для сайтов. Можно будет в один клик сделать сразу 4 вещи.
- Зарегистрироваться.
- Войти
- Подписаться
- Включить Push API уведомления в браузере.
То есть пользователь нажмет на кнопку, у него спросит доступ к гугл аккаунту, спросит доступ к уведомлениям — все. Пользователь готов получать уведомления. Более того, если пользователь потом-таки скачает приложение под любую другую платформу — он будет продолжать получать уведомления с вашего сайта, ну до тех пор пока сам от них не отпишется в личном кабинете. При этом мой сервис позволяет отправлять даже на мобильные устройства уведомления без установки приложения!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (13)
TimsTims
15.06.2015 14:12Ну вот, хотел уже перейти, как выяснилось что у нескольких человек ios. Будем ждать вестей.
BupycNet Автор
15.06.2015 19:26Можно подробнее, сколько человек на iOS и какая доля? С чего хотите перейти?
TimsTims
15.06.2015 21:46С пушовер, человек не так много (ну а зачем их много) — 6, из них 4 с iphone и андроид не признают. Уведомления нужны по важным и неважным событиям на серверах, их тоже не так много, но когда критические — тогда и нужен сервис, который как смс, но дешевле.
darkgool
27.06.2015 10:57Такая же история, присматриваем давненько себе уведомлятор для мобилок о событиях в системе, нужен ios и android однозначно, желательно простенькое и понятное приложение. Уведомления должны быть как по спискам рассылки, так и индивидуальные.
Какое-то время жили на телеграм апи, сейчас активно ковыряем их новый апи для ботов. Но телеграм есть не у всех, хотя получилось удобно.BupycNet Автор
27.06.2015 12:451. Телеграм тоже не так уж удобен, т.к. к примеру на компе тогда надо держать открытой их вкладку, ну и не все им пользуются да.
2. У меня подход приложений как можно более минималистично. Т.е. ставишь приложение, а управление через веб. Приложение весит 1 мегабайт — влезает даже на дохленький бюджетник с парой мегабайт свободной памяти.
3. iOS будет через месяц я так думаю, еще возможно к концу лета будет винфон. Плюс в отличии от телеграма есть поддержка хрома, а это значит что можно получать уведомления ВООБЩЕ без приложения. Т.е. зашел на сайт переключил галку и получаешь. Работает на андроиде и хроме.
4. у меня есть рассылки по одному человеку и всему каналу. Если нужно будет буквально за час реалзую рассылки по спискам по 1000 человек в массиве. Просто еще никому не потребовалось.
Еще есть система отслеживания приема и клика по уведомлению. Можно к пример через минуту проверить — если не дошло (у человека нет интернета) шлем ему смску.darkgool
27.06.2015 13:24Отличное начинание, буду следить за вашим проектом и попробую в ближайшее время его как следует потестить. Уведомления вообще очень нужная штука в наше время :) А клепать свое приложение ради только пушей не хочется.
BupycNet Автор
27.06.2015 13:36Тут дело не только в «не хочется» тут проблема в том как заставить пользователя поставить приложение. И как помочь пользователю управлять информацией.
Используя мой сервис у пользователя есть единое место получения всех уведомлений. Он сразу через одно приложение может получать по 10-20 подписок. А используя фильтры можно получать лишь полезную информацию по ключевым словам. Я подписан сам уже где то на 30 каналов. Но засчет фильтрации мне в сутки приходит где то 10-15 пушей информационных с различными статьями, и 5-10 отладочных от других проектов за которыми я слежу.
И тут выходит такая ситуация, что пользователю проще поставить что то универсальное. Мне бы в итоге пришлось ставить 30 приложений вместо этих 30 каналов. Ну бред ведь, кто такое делать будет.
Ununtrium
Я правильно понимаю, что даешь разрешения на уведомления сразу со всех сайтов?
BupycNet Автор
Не совсем так. Даёшь разрешение на отправку уведомлений для PushAll.
А дальше все управление разрешниями ведётся внутри самого PushAll.
Это позволяет к примеру сесть за новый компьютер, разрешить доступ и сразу получать все уведомления от каналов на которые ты подписан со всеми настроенными фильтрами и т.д. то есть можно даже сказать что мой сервис в облаке (в духе современных тенденций)
TITnet
Чем это отличается от Twitter/RSS?
BupycNet Автор
Начнем с того, что Twitter и RSS это чисто глобальный метод рассылки — один контент всем. Новости например и т.д. Мой сервис вообще изначально нацелен именно на личные пуши: написали вы мне на хабре сообщение — бац я получил пуш. Я ответил вам на комментарий — вам пришел пуш.
И это может сделать абсолютно любой сайт бесплатно. Отправлять мгновенные уведомления сразу на устройства без создания каких либо приложений.
Но сейчас внешне пока что приходится наполнять сворее некой вариацией конвертера Pull в Push. Например тот же RSS надо сканировать постоянно, чтобы получать обноления. На телефоне это означает, что заряд будет сжираться больше.
В плане RSS мой сервис адаптирован не на чтение статей и ленты, а на получение фильтрованных данных. К примеру я разрабатывая свой проект интересуюсь обновлениями хрома, андроида, гуглом и пушами. Подписался на нужные мне каналы и настроил фильтр. В случае если какая то важная новость проскочит — я сразу получу пуш.
И еще отличие от RSS — для большенства пользователей RSS это дремучий лес. Т.е. это какая то волшебная ссылка с метаданными. Мало кто понимает что это такое вообще. Мой сервис дает понятный каталог, похожий на привычные каталоги приложений с каналами, где можно посмотреть ленту, прочитать название, описание, увидеть иконку, и посмотреть ленту.
Push-уведомления должны по сути содержать, что то важное. Если ты отфильтруешь RSS-ку по каким то важным данным (например тебе нужно быстро в случае чего узнать, появилась новая технология или решение) то это будет просто мегаполезно.
Как примеру еще решение с сериалами — серий выходит просто мегамного. До того, как я создал сервис единственным решением следить за этим была подписка на группу вконтакте. Но у многих число групп переваливает за пару сотен. В итоге, к примеру, даже лично я пропускал иногда 2-3 сериала, и только через пару дней, когда уже не было времени их смотреть, я узнавал, что они переведены.
А сейчас я получаю пуш, через канал используя фильтр. Там каждый день идет где то около 20-50 пушей о выходе серий от различных студий различных сериалов. Я получаю 2-3 пуша в сутки по сериалам, которые я смотрю. И эти пуши именно полезны. Я увидел — я узнал что вышла серия. Пришел домой — скачал.
Да более продвинутые вообще через RSS настраивают автоскачивание и т.д. у них еще NAS дома и т.д. Но 90% этого не умеют.
Ну и не совсем понимаю, почему на хабре столько разработчиков и т.д. и мало кто понимает, что через эту штуку можно пушить различные алерты о состоянии работы сервисов, сервера и т.д. Эта информация приватна и нужна только вам. Никакой твиттер или rss вам тут не поможет. Ну а почта — чистить потом эти алерты, да и почту тоже надо обновлять. А пуш прилетел — ты его увидел и стер. На почту разве что можно присылать например потом сводку раз в сутки. Для быстрых каких то уведомлений, когда нужно решить это сейчас это мало подходит.
Я сейчас буду делать упор на создание плагинов к различным CMS. Можно будет поставить плагин и пользователи смогут получать уведомления о различных действиях с этого сайта.
BupycNet Автор
Забыл небольшую деталь. У меня RSS интеграция целиком зависит от числа подписчиков. У Feedly к примеру обновление RSS лент длится где то 3 часа. Я даже для каналов с одним подписчиком даю обновлять ленту каждый час. А от 10, раз в 30 минут.
От 100 подписчиков, обновление идет уже раз в 10 минут, что вполне уже в районе мгновенного.
Ну, а если кому то захочется еще быстрее — если более 500 подписчиков, лента будет обновляться раз в минуту. Это ну никак не сравнимо с 3 часами в Feedly.