Есть ли способ указать, что для прогрессивного веб-приложения требуется аппаратная клавиатура?

Я знаю, что вся концепция PWA заключается в том, чтобы приложение масштабировалось по всем размерам экрана. Я написал IDE-подобное приложение (в PWA), которое является насыщенным информацией, и я хочу, чтобы мой PWA был переносимым между настольными ОС (мышь + клавиатура) и планшеты (сенсорная + аппаратная клавиатура).

Мое приложение не совсем предназначено для мобильных ОС. Есть много клавиатурных сокращений, и хотя я мог бы добавить элементы пользовательского интерфейса для имитации этих нажатий клавиш, экран уже достаточно насыщен действиями. Приложение просто не подходит ни для одной платформы без аппаратной клавиатуры. Но PWA (с фильтром аппаратной клавиатуры) - идеальный метод распространения для настольных ОС с современными браузерами, так что я немного в замешательстве.

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


person Chris    schedule 16.05.2018    source источник
comment
Можно попробовать удалить значки используемые для смартфона? Значит, он все еще работает как pwa на этом устройстве?   -  person baao    schedule 17.05.2018


Ответы (1)


Краткий ответ - нет явного способа определить доступность физической клавиатуры программно или ограничить ваше приложение устройствами только с клавиатурой, запросив браузеры / поисковые системы наложить это ограничение с любыми типами метаданных / скриптов. Сказано, что вы не можете ограничить пользователя, введя URL-адрес или свою веб-страницу PWA в адресную строку и запросив ее. Все, что вы можете сделать, это при загрузке выполнить несколько проверок, как в «альтернативном решении», и показать пользователю сообщение о необходимости использования компьютера с подключенной клавиатурой. Если программная клавиатура достаточно хороша, чтобы обрабатывать ваши чеки, вам не повезло!

Разработчики экспериментировали с некоторыми хитрыми решениями.

Альтернативное решение. К сожалению, ни на что нельзя положиться, не спросив самого пользователя. При загрузке приложения (или когда вы сочтете это целесообразным) предложите пользователю нажать один из ярлыков, который, по вашему мнению, более подходит для пользователя с физической клавиатурой. Подождите, пока еще не услышит эту комбинацию клавиш. Если событие было обнаружено, вы можете предположить, что пользовательская клавиатура хорошо справляется с вашими решениями для быстрого доступа. Также укажите кнопку «Нажат ярлык» и другую кнопку «Недоступно на моей клавиатуре», и при нажатии вы можете сообщить пользователю идентификатор приложения не для него, или даже вы можете позволить им использовать его с помощью мыши и параметра меню (который более подходящий).

person Anand    schedule 17.05.2018
comment
Вопрос не в том, присутствует ли физическая клавиатура, а в том, можно ли убедиться, что мой PWA не указан или не представлен на устройствах без физической клавиатуры (или доступа к ней). Я знаю, что PWA предназначены для переносимости на любое устройство, но иногда достаточно переносимости между устройствами, которые удовлетворяют хорошо продуманным предварительным условиям (например, для PWA на основе кодирования требуется аппаратная клавиатура). - person Chris; 17.05.2018
comment
НЕТ. Вы не можете ограничить. PWA - это обычные веб-сайты на конец дня, которые пользователи находят через различные источники и получают доступ с помощью вашего URL-адреса в браузере, а затем могут добавить его на главный экран и получить доступ оттуда. Браузер / поисковая система или любой другой такой фактор ссылки не даст вам выбора для фильтрации веб-сайтов на основе таких возможностей оборудования. - person Anand; 17.05.2018
comment
@Chris, этот ответ проясняет ваш вопрос? Если нет, дайте мне знать, что все еще не ясно. - person Anand; 21.05.2018
comment
Я думаю, что это технически правильный ответ, но он отвечает на неправильный вопрос. Кажется, он отвечает на вопрос, можно ли обнаружить аппаратную клавиатуру в JavaScript или нет, а не на вопрос, который я задавал, а именно, можно ли создать PWA только для настольных компьютеров (платформы с аппаратной клавиатурой). Я думаю, что по состоянию на май 2018 года ответ - нет, это невозможно. Тем не менее, я думаю, что сейчас это слабое место в спецификации. А пока, учитывая, что это ответ на другой вопрос, я собираюсь оставить это открытым для будущих решений. - person Chris; 21.05.2018
comment
Не могли бы вы объяснить, как вы стремитесь создать PWA только для настольных платформ? В какой части вы хотите указать ограничение? Насколько я знаю о сети, вы не можете наложить какие-либо ограничения без помощи JavaScript и связанных метатегов. Это причина выделения ограничений в JS. Как бы вы остановили поисковую систему, чтобы она не отображала ваш сайт, когда пользователь ищет Surface Pro, например, когда физическая клавиатура отключена и волшебным образом отображается в результатах, когда он подключает клавиатуру? ... - person Anand; 21.05.2018
comment
Как остановить загрузку веб-страницы браузером, когда пользователь вводит URL-адрес в адресной строке? Все, что вы можете сделать, чтобы ограничить, - это загрузить свою страницу, используя код на своей странице, вы можете показать сообщение о том, что пользовательское устройство не подходит для использования вашей веб-страницы. Чтобы вы так сказали, вам понадобится JS и какое-то решение, которое я объяснял. Помните, что PWA - это не что иное, как веб-приложение, которое загружается в браузере и связано с ограничениями веб-стандартов. Все, что я говорю, это то, что не существует веб-стандарта для поддержки того, о чем вы просите, и JS-решение, о котором я упоминал, - это все, что вы можете сделать. - person Anand; 21.05.2018
comment
У меня уже есть решение для предупреждения о том, что приложению требуется аппаратная клавиатура. Вопрос просто в том, чтобы классифицировать PWA в его метаданных, что наличие аппаратной клавиатуры является обязательным требованием. Я счастлив, что в настоящее время спецификация не поддерживает это требование. На самом деле это довольно странно, когда для приложений в App Store и Play Store доступны всевозможные фильтры, даже для конкретного оборудования. В идеале PWA - это полностью переносимое приложение, но там, где есть особые требования к устройству, имеет смысл указать, что это метаданные (учитывая, что Microsoft начала очищать приложения). - person Chris; 22.05.2018
comment
Я добавил +1 за ваш ответ и обсуждение, и я ценю это, но я собираюсь оставить это открытым, поскольку я честно считаю, что это упущение в спецификации и ответ (на который сейчас невозможно ответить) представит себя в ближайшие год или два. Но, честно говоря, спасибо за ваше время и помощь. - person Chris; 22.05.2018
comment
Хотя я начал обсуждение в чате, чтобы вы указали, какой конкретный вариант использования вы пытаетесь избежать, я мог видеть, что вы также согласны, что это функция, которой сейчас нет, и вы надеетесь увидеть через год или два. . StackOverflow даст вам только тот ответ, который вам нужен в данный момент времени. Если он изменится в будущем, кто-то придет и добавит его сюда, независимо от статуса вопроса. Если вас больше интересует эта функция, запросите ее в списке рассылки W3C и следите за ответом сообщества на нее. w3.org/Mail. Это правильный способ добавить новые функции веб-спецификации. - person Anand; 22.05.2018