我的意思是完全在后台工作,例如即使屏幕关闭,应用程序正在运行并且可以发送声音通知。
我的应用程序用于查看价格变化。价格变动时会发出声音提示。
那么,答案应该是yes还是no?谢谢。
我的意思是完全在后台工作,例如即使屏幕关闭,应用程序正在运行并且可以发送声音通知。
我的应用程序用于查看价格变化。价格变动时会发出声音提示。
那么,答案应该是yes还是no?谢谢。
由于 iOS 7 出现了另一种可能的解决方案,我将为 iOS 7 及更多用户提供额外的答案。
新的后台获取功能可以定期更新后台应用程序的内容。获取的时间间隔不能由用户设置,而是由 iOS 根据其用户的统计信息(应用程序使用情况等)设置。
可以通过插件使用 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(); // <-- N.B. You MUST called #finish so that native-side can signal completion of the background-thread to the os.
}
});
}
Fetcher.configure(fetchCallback);
}
这个抓取插件使用UIApplicationBackgroundFetchIntervalMinimum
抓取间隔的值,这会导致最快的抓取周期。
如果您为 ios 7 + 构建cordova,并准备将通用代码跳出到 xcode 中,您可以将“必需的背景模式”添加到 ios 构建的 .plist 文件中,它不会被新构建覆盖.
例如,我选择了“应用程序从网络下载内容”选项
然后,您所要做的就是确保您的应用程序每隔几分钟就会戳到外部世界(我使用的是 firebase,所以我得到了一个虚拟节点的值)。
我还没有提交到应用商店,但是如果请求不是太频繁(我知道应用在暂停之前大约有 10 分钟的后台时间)以及你的应用在后台需要的资源,我看不出它应该如何失败/at rest 并不繁重。
这可以将这个问题的解决方案归结为代码中的几行代码。