Самая большая проблема Интернета — отсутствие толчка. Что-то новое может быть опубликовано, но вы должны не забыть вернуться на страницу, чтобы увидеть, что это такое — вам нужно связаться с веб-страницей. Chrome 42 поддерживает Push API, а это означает, что веб-страницы могут связываться с вами.
Push-уведомления в Интернете были проблемой очень давно. Большинство веб-сайтов либо предлагают RSS-канал, либо надеются, что их пользователи подпишутся на систему уведомлений по электронной почте. Социальные сети также играют свою роль в продвижении контента пользователям, но по сравнению с тем, что может делать приложение, этого немного не хватает.
API push-уведомлений — это стандарт W3C / WHATWG для отправки уведомлений подписчикам. Он находится на очень ранней стадии разработки, и при его использовании возникает множество проблем — несмотря на это, Google, похоже, придал большое значение его реализации. Как говорится в блоге Chrome:
«В ближайшие недели пользователи мобильного Интернета смогут выбрать получение push-уведомлений от первых пользователей, включая Beyond the Rack, eBay, Facebook, FanSided, Pinterest, Product Hunt и VICE News».
Это еще более удивительно, поскольку на данный момент только Chrome поддерживает Push. У Mozilla есть другой API Push, который она поспешила создать для поддержки своей ОС Firefox. У Apple есть своя альтернатива, а у Microsoft — еще одна. Проще говоря, если вы хотите использовать Push, это беспорядок, и вам, вероятно, придется выбрать поддержку только Chrome на данный момент или выбрать использование такой службы, как Roost, которая пытается сгладить различия. На данный момент Roost предлагает уведомления Chrome и Safari.
Если вы все же решите сделать это самостоятельно, приготовьтесь к довольно сложной работе. Основная идея состоит в том, что вам необходимо зарегистрировать сервис-воркер, то есть поток JavaScript, для обработки уведомления. Service worker работает в фоновом режиме, даже если ваша страница не открыта. Следующая неожиданность заключается в том, что вам нужно использовать службу Google Cloud Messaging (GCM), чтобы фактически отправить push-уведомление. Ваш сервер отправляет уведомления в GCM, а затем он передает их клиенту. Все, что вам нужно сделать, это отправить POST, содержащий ваш регистрационный ключ и идентификатор — тело содержит уведомление. Вы можете запрограммировать своего сервис-воркера так, чтобы он открывал URL-адрес, когда пользователь нажимает на уведомление, но поскольку в настоящее время нет возможности включить данные в уведомление, место назначения, например домашняя страница вашего сайта, должно быть жестко запрограммировано. В будущем должна появиться возможность передавать данные в зашифрованном запросе POST.
Вы не можете не думать, что весь API немного недоработан. На данный момент вам нужно использовать GCM, помещая серверы Google между вами и вашим клиентом, но есть надежда, что это можно будет изменить в более поздней версии. Вы не можете использовать push-уведомление для незаметного обновления чего-либо, но опять же, мы надеемся, что это будет добавлено. Наконец, хотя Android получит уведомление, если Chrome не запущен, на рабочем столе должен быть запущен Chrome, но не обязательно с открытой веб-страницей. Неясно, сможет ли Firefox таким же образом обрабатывать уведомления на Android.
Сочетание Push API с возможностью добавления сайта на домашнюю страницу на Android, и вы получаете эквивалент приложения. С добавлением манифеста веб-приложения вы можете контролировать, как ваш сайт добавляется на главный экран, а с зарегистрированным сервисным работником вы можете поддерживать сайт в рабочем состоянии даже в автономном режиме.
В настоящий момент Google продвигается вперед с Push API — будет интересно посмотреть, какую поддержку он получит от Microsoft и Apple. Ясно одно: это еще один из тех моментов, когда «лучше всего смотрится в Chrome».