Задать вопрос
@FFEK

Какой фреймворк позволяет писать гибридные (Cordova-like) мобильные приложения и поддерживает фоновые сервисы в них?

Мне очень нравится JS и именно Web-стек. И я таки хочу написать мобильное приложение именно на нем. Кто бы чего ни говорил (а говорят про такой подход очень много, очень давно и в основном нецензурно)

Но ведь такой подход дает очевидное преимущество - одна и та же кодовая база сможет работать реально на всех платформах, включая браузер. А мне без этого никак.

Но в этом приложении нужен BootReceiver. То есть чтобы при запуске ОС запускался какой-то фоновый сервис из этого приложения, и работал с бек-ендом по HTTP.

Ну, BootReceiver я могу и на Kotlin и Swift написать (и оформить это в виде плагина, который потом можно таскать из приложения в приложение), но он должен запускать сервис - а вот сервис-то уж точно надо писать на JS.

Но я так и не смог найти ответ, как же на Cordova сделать фоновый сервис. Там весь код крутится в каком-то WebView, который находится в Activity. Не вижу никакой возможности запустить какой-то JS вне этого WebView.

Открываю исходники cordova-android и смотрю что там за WebView:
https://github.com/apache/cordova-android/blob/mas...
https://github.com/apache/cordova-android/blob/mas...

Увы! Это обычный системный WebView. А это, насколько я понимаю, значит, что:
- данный WebView использует системный браузер, у которого JS-движок не имеет никаких API для использования без WebView
- ну и Cordova очевидно не содержит в себе никакого дополнительного JS интерпретатора, а крутит весь код в этом системном WebView

Если это так, то сделать фоновый сервис на Cordova в общем-то нельзя.

Но так ли это?
И может быть какой-то другой подобный фреймворк дает возможность делать именно фоновые сервисы (service workers?)?

Разумеется я понимаю что в этих сервисах не будет DOM, BOM. Ведь сервисы не будут крутиться в WebView.
Однако теоретически там вполне возможны такие вещи как fetch, XHR, WebSocket, WebAssembly и даже localStorage.
Чуете, пахнет Node.js?
Ну да, это действительно будет какой-нибудь интерпретатор JS, который вшивается в ваше приложение (ну или устанавливается отдельным приложением на устройство, как .NET Framework на Windows), а также вшиваются "безбраузерные" реализации вышеупомянутых fetch, XHR и прочего, но только те из них, которые реально используются в ваших сервисах.

А если такого нету - то я сам такое создам.
  • Вопрос задан
  • 60 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Rasters
Посмотрите Framework7, там всё это есть "из коробки".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы