使用cca Google Chrome应用时,从后台服务中触发Chrome警报

时间:2014-10-07 01:54:59

标签: google-chrome-app cordova-chrome-app

尝试移动Chrome应用API:(https://github.com/MobileChromeApps/mobile-chrome-apps

我想要实现的是注册我的Chrome警报而不必粗暴地启动应用程序的主要活动,因为这会导致糟糕的用户体验。

挑战: 我已经指定了一个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。快乐的时光!当然,一个巨大的缺点是没有用户希望在启动时打开完整的主活动窗口。

请告知是否有一种不太笨重的方法让后台线程在启动时注册的background.js中指定chrome.alarm。我不想打开应用程序的mainActivity,但这是迄今为止我能看到的唯一方式来让它们注册。最好不要在Android SDK中注册这些警报,因为我打算保持尽可能接近使用Web API,并希望使用background.js作为钩子来实现这一点,以保持与Chrome网络应用程序一致的内容。作为Android平台。

我做了什么:

一个cca(chrome mobile web app)应用程序,它本地注册后台服务(我扩展BackgroundService)作为插件并注册它以在启动时运行。这是唯一的'本机安卓代码',以便在启动时加载应用程序。

启动android后,此后台服务只需发出startActivity(LaunchIntent)即可打开应用程序。这样做,我的background.js文件中指定的chrome.alarm成功注册。如果我不这样做,在我手动打开应用程序主要活动之前,我在background.js中指定的chrome警报不会被注册。因此,我使用backgroundService打开应用程序主要活动。 这根本不是理想的,我只是想以某种方式注册我的chrome.alarms而不必粗暴地启动应用程序主活动窗口。

我可以在我的BackgroundService中调用一个调用,只将我的background.js文件中包含的chrome.alarms读取并注册为fire? 谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

首先,感谢您使用Chrome Apps for Mobile! (注意:我在项目上工作)

很抱歉,我们目前的助推器是"原油"并且"笨拙的",我们同意它。您可以跟踪this issue我们努力取代当前的Background-scripts-embedded-in-main-Activity-webview策略以及真正的后台服务和多窗口支持。基本上,您已经完全概括了我们的计划和现有限制。

这项工作实际上是在近期安排的,并且肯定会在今年年底之前完成。

chrome.alarms一样,此功能对chrome.gcmchrome.tcpServer非常重要(以及其他原因)。