Мне всегда было странно видеть, как различные устройства одного и того же человека взаимодействуют между собой. По сути мы всё ещё находится на том же уровне, когда пересылали друг-другу файлы по Bluetooth. Радует, что эта проблема начала как-то решаться в последнее время, например, возможно вы помните презентацию WebOs от Palm (HP) и функцию Touch To Share, там был момент, когда одно устройство касалось другого и веб страница как будто перетекала между ними, в этом видеоролике более наглядно.
В последней презентации Apple, где они представили новую iOS 8, была показана технология Continuity, позволяющая приложениям видеть другие устройства пользователя и обмениваться с ними информацией. Вы писали что-то в почтовом клиенте на телефоне, устали — можете продолжить с того же места без сохранения в черновики.
Всё это очень здорово, но практически никак не облегчает жизнь обычным веб разработчикам. Есть ли какое-то решение?
Сейчас практически все браузеры позволяют синхронизироваться между устройствами через свои сервисы. Для Chrome это пользователь в Google, для Safari — iCloud, Firefox использует Firefox Sync, ну а в Яндекс.Браузере это учётная запись Яндекса. Синхронизация это очень удобно, на всех устройствах одни и те же пароли, вкладки, закладки, иногда даже Куки. Некоторые идут ещё дальше, в Chrome можно выбрать в качестве устройства для печати — ваше мобильное устройство. А в Яндекс.Браузере есть функция быстрого звонка, которая позволяет “быстро звонить по найденным в интернете номерам."
Как видите, браузеры во всю используют возможности работы с устройствами пользователя, как с единой экосистемой. Но мне, как веб разработчику, тоже хочется прикоснуться к этому. Тогда я подумал, а что если бы в браузере было некое JavaScript API, при помощи которого я мог бы узнавать об устройствах пользователя и выполнять какие-то действия (само собой только с разрешения владельца).
Основные направления, которые открываются благодаря этому:
- Знание, о том какими устройствами пользуется пользователь, может помочь сайтам улучшить их User Experience (предложение установить приложение для вашего типа устройства)
- Расширение возможностей одного устройства другим (на ноутбуках нет акселерометра или GPS)
- Упрощение сценариев, при которых пользователю нужно было взаимодействовать между устройствами (аналоги того же быстрого звонка от Яндекс.Браузера)
По сути нужно только несколько методов:
- Api.getDevices() — получить информацию об устройствах пользователя
- Api.connect(device, mode) — установить связь с конкретным устройством (запросить нужные права доступа)
- Api.send(device, data) — базовый метод для отправки любых данных на устройство
- Api.receive(device, callback) — базовый метод для получения данных с другого устройства
- Api.push(device, message, data) — возможно ещё отправка некого push сообщения с данными.
Придумывать реальные сценарии можно до бесконечности, вот что пришло в голову мне.
Сценарий с магазином
Предположим, вы заполняете карточку для товара на Avito или EBay. В какой-то момент вам нужно выложить фотографии товара, хорошо, если вы сделали это заранее, но если нет, то можно конечно попытаться сфотографировать то что нужно на камеру ноутбука. Но представьте, если сайт, рядом с кнопкой загрузки файла, предлагает так же воспользоваться и камерой вашего смартфона? Вы просто нажимаете на кнопку, достаёте телефон, делаете фотографии, и они автоматически появляются на веб-сайте. Просто и удобно.
Сценарий с билетами
Я всегда немного опасаюсь оставлять номер своего мобильного на сайтах, даже если это авиаперевозчик, кажется мне было бы сильно проще, если перевозчик мог отправить мне электронный билет не спрашивая у меня реальный номер телефона:
И куча других возможностей, например: управление веб играми и видео сервисами через мобильное устройство, расширение возможностей экрана (в картах в режиме панорамы выводить панораму на одном устройстве, а карту на другом) и т.д.
Если развивать идею дальше, то можно дать доступ не только к экосистеме устройств, но и приложений. Открыть адрес с компьютера через Foursquare или навигатор, а может быть в Booking.com? Почему бы и нет.
Я был бы рад услышать от вас примеры того, как подобная функциональность была бы полезна лично вам. Возможно, если разработчики браузеров увидят, что это нужно многим, то мы увидим реализацию уже в самом ближайшем будущем.
Автор: M0sTH8