Подтвердить что ты не робот

Мобильное приложение HTML5 работает, когда экран телефона выключен?

Я заинтересован в создании веб-приложения на основе геолокации HTML5, которое все еще может работать, когда экран телефона выключен (скажем, отслеживание того, как далеко вы работали, когда ваш телефон находится в вашем кармане).

Есть ли способ сохранить приложение, но отключить экран или запустить приложение в фоновом режиме, пока используются другие приложения? Возможно ли это, по крайней мере, на некоторых популярных мобильных устройствах (новые устройства iOS и Android в частности?)

4b9b3361

Ответ 1

My музыкальное приложение - это HTML5, а также нужно запускать в фоновом режиме. Поддержка этого зависит от мобильного браузера.

  • Safari в iOS: продолжит воспроизведение одной или двух песен в фоновом режиме
  • Собственный браузер на Android: будет воспроизводить одну песню, а затем останавливается
  • Firefox на Android: остановится, когда блокировки экрана или браузер потеряют фокус или песню.
  • Dolphin на Android: играет в фоновом режиме! но в конечном итоге останавливается
  • Opera на Android: улучшенная поддержка фона, Javascript продолжает работать, и музыка продолжает воспроизводиться, даже когда экран выключен, или Opera отправляется на задний план, но в конце концов останавливается после пары песен.

Как вы можете видеть, он попал или промахнулся. Половина времени я в конечном итоге пытаюсь поместить мой телефон в карман назад, пытаясь удержать экран, пока я случайно не нажму на него - полностью отстой. Я жажду того дня, когда у пользователя больше контроля над запуском приложений HTML5 в фоновом режиме. Если бы я должен был догадаться, я бы сказал, что универсальная поддержка для этого очень далека, если она когда-либо даже тянет. Я вынужден к родному приложению, хотя я почти уверен, что Apple никогда его не одобрит. В то же время я буду надеяться и буду тестировать новейшие мобильные браузеры. Потому что, если это действительно произойдет, это будет потрясающе.: -)

Я также должен отметить, что, по моему опыту, для почти всех вышеперечисленных комбинаций, используя HTML5 для одновременного запуска javascript, вытаскивания сетевых данных и воспроизведения музыки, как правило, превращается ваш телефон в печь и убивает вашу батарею довольно быстро. Ugg.

Кроме того, если вы используете jQuery Mobile (который в основном фантастический), вы увидите различные сенсорные обработки в разных браузерах. Например, Firefox touch отлично работает, Dolphin ужасен и требует точного нажатия и удержания и выпуска, чтобы получить право. Это не напрямую ошибка HTML5, а другая проблема, с которой я имею дело.

Вот еще один разработчик интересные мысли на мобильном HTML5.

ОБНОВЛЕНИЕ: я просто (22 мая 2013 г.) загрузил Opera на свой Samsung Galaxy S3, и у него есть лучшая поддержка HTML5. Для моего приложения он продолжает запускать javascript в фоновом режиме, независимо от того, выключен экран или Opera выведена на задний план, по крайней мере, на пару песен.

Ответ 2

Вы можете использовать сервис работников:

https://developers.google.com/web/fundamentals/primers/service-workers/

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

Чтобы быть точным, приложения могут зарегистрировать работника службы следующим образом:

if ('serviceWorker' in navigator) {
  window.addEventListener('load', function() {
    navigator.serviceWorker.register('/sw.js').then(function(registration) {
      // Registration was successful
      console.log('ServiceWorker registration successful with scope: ', registration.scope);
    }, function(err) {
      // registration failed :(
      console.log('ServiceWorker registration failed: ', err);
    });
  });
}

После успешной регистрации работника сервиса любая логика приложения, реализованная в sw.js, будет выполняться в фоновом режиме; даже если вкладка приложения отключена.