Fire Chrome Alarms из фоновой службы при использовании cca-приложений Google Chrome

Экспериментирование с API приложений Mobile Chrome: ( https://github.com/MobileChromeApps/mobile-chrome-apps)

Чего я пытаюсь добиться, так это регистрации моих хромированных будильников без необходимости грубо запускать основную деятельность приложений, так как это вызывает плохой пользовательский опыт.

Задача: я указал chome.alarm, который успешно регистрируется при открытии приложения (например, "cca run android"). Эти тревоги указаны в файле background.js, который объявлен как фоновый скрипт в файле manifest.json.

Я хотел, чтобы они регистрировались автоматически при загрузке, поэтому я реализовал фоновый сервис и подумал, что могу просто вызвать приложение, чтобы зарегистрировать аварийные сигналы, указанные в файле background.js. Тем не менее, пока я могу найти единственный способ добиться этого - через вызов для запуска основной активности приложений через Intent из фоновой службы, как более подробно описано ниже.

При загрузке мой фоновый сервис просто вызывает:

//Launch main activity..
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.company.appname");
startActivity(LaunchIntent);

Вышеизложенное запускает приложение в его основной деятельности, и вышеупомянутые chrome.alarms регистрируются по желанию. Счастливые дни! Конечно, существенным недостатком является то, что ни один пользователь не хочет, чтобы при загрузке полностью открывалось главное окно активности.

Пожалуйста, сообщите, если есть менее неуклюжий способ зарегистрировать chrome.alarm в background.js, зарегистрированном при загрузке фоновым потоком. Я не хочу открывать mainActivity приложения, но в настоящее время это единственный способ, которым я пока могу видеть их регистрацию. Желательно не регистрировать эти сигналы тревоги в Android SDK, так как я намерен оставаться как можно ближе к использованию веб-API и хочу использовать background.js как ловушку для этого, чтобы поддерживать связь с веб-приложениями Chrome, а также в качестве платформы Android.

Что я сделал:

Приложение cca (мобильное веб-приложение chrome), которое изначально регистрирует фоновый сервис (я расширяю BackgroundService) в качестве плагина и регистрирует его для запуска во время загрузки. Это единственный "нативный код Android" для загрузки приложения во время загрузки.

После загрузки Android этот фоновый сервис просто запускает startActivity(LaunchIntent), чтобы открыть приложение. При этом мой chrome.alarm, указанный в моем файле background.js, успешно регистрируется. Если я этого не сделаю, мой сигнал Chrome, указанный в background.js, не будет зарегистрирован, пока я не открою основное действие приложений вручную. Поэтому я использую backgroundService для открытия основной активности приложений. Это совсем не идеально, я просто хотел бы как-нибудь зарегистрировать мои chrome.alarms без необходимости запуска главного окна приложения.

Есть ли вызов, который я могу сделать в моем BackgroundService, чтобы только chrome.alarms, содержащиеся в моем файле background.js, были прочитаны и зарегистрированы для запуска? Спасибо за ваше время.

1 ответ

Решение

Во-первых, спасибо за использование приложений Chrome для мобильных устройств! (Примечание: я работаю над проектом)

Извините, что наш текущий загрузчик "грубый" и "неуклюжий", и мы согласны с этим. Вы можете отслеживать эту проблему, чтобы узнать о наших усилиях по замене нашей текущей стратегии Background-scripts-embedded-in-main-Activity-webview реальным фоновым сервисом и поддержкой нескольких окон. По сути, вы кратко изложили наш план и существующие ограничения.

Эта работа фактически запланирована на ближайшую перспективу, и, безусловно, будет выполнена до конца года.

Так же как chrome.alarmsэта функция довольно важна для chrome.gcm а также chrome.tcpServer (среди прочих причин).

Другие вопросы по тегам