phonegap应用程序可以在后台工作吗?
我的意思是在完全背景下工作,例如,即使屏幕closures,应用程序正在运行,并可以发送声音的通知。
我的应用程序用于观看价格变化。 价格变动时会有声音提示。
那么,答案应该是或不是? 谢谢。
这里有一些链接可以帮助你
链接1:类似的SO问题
链接2:红色文件夹博客
链接3:GitHub中的BackgroundService插件
更新
链接4:iOS4上的Phonegap后台服务
链接5:iOS5中的phonegap后台服务
由于iOS 7带来了另一种可能的解决scheme,我将为iOS 7的用户提供更多的答案。
新的后台抓取function可以定期更新后台应用程序的内容。 获取的时间间隔不能由用户设置,而是由iOS根据用户的统计信息(应用程序使用情况等)进行设置。
这个新function可以通过插件通过PhoneGap / Cordova访问 – 幸运的是,已经开发了一个提供这种访问的插件 。 您可以将它安装到您的Cordova项目
cordova plugin add https://github.com/christocracy/cordova-plugin-background-fetch.git
结合提供访问iOS的本地通知的插件,这可以创造奇迹。 这样的插件也已经开发出来了,例如这个插件。 将它安装到您的Cordova项目
cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git
现在可以将这些插件组合到您的JavaScript代码中,以执行后台活动:
function onDeviceReady() { var Fetcher = window.plugins.backgroundFetch; // Your background-fetch handler. var fetchCallback = function() { console.log('BackgroundFetch initiated'); // perform your ajax request to server here $.get({ url: '/heartbeat.json', callback: function(response) { // process your response and whatnot. window.plugin.notification.local.add({ message: 'Just fetched!' }); //local notification Fetcher.finish(); // <-- NB You MUST called #finish so that native-side can signal completion of the background-thread to the os. } }); } Fetcher.configure(fetchCallback); }
此提取插件使用UIApplicationBackgroundFetchIntervalMinimum
值作为提取间隔,这将导致尽可能快的提取周期。
如果您为ios 7 +构buildcordova,并且已准备好将您的通用代码导出到xcode中,则可以将“所需的背景模式”添加到ios版本的.plist文件中,并且不会被新版本覆盖。
例如我select了“从networking下载应用程序内容”选项
所有你需要做的就是确保你的应用每隔几分钟就会向外界推送(我正在使用firebase,所以我得到了一个虚拟节点的值)。
我还没有提交到应用程序商店,但是如果请求不太频繁(我知道应用程序在被暂停之前有大约10分钟的背景),并且您的应用程序在后台需要的资源/在rest是不繁重的。
这可以将这个问题的解决scheme降低到代码中的几行内容。