Ответ 1
Вот некоторые ссылки, которые могут помочь вам в этом
ссылка 1: аналогичный вопрос SO
ссылка 2: Блог с красными папками
ссылка 3: плагин BackgroundService в GitHub
Обновление
что я имею в виду, работает полностью, например. даже экран выключается, приложение работает и может отправлять уведомления со звуком.
Мое приложение используется для просмотра изменений цен. При изменении цены появится предупреждение со звуком.
Итак, ответ должен быть да или нет? Спасибо.
Вот некоторые ссылки, которые могут помочь вам в этом
ссылка 1: аналогичный вопрос SO
ссылка 2: Блог с красными папками
ссылка 3: плагин BackgroundService в GitHub
Обновление
Так как появилось еще одно возможное решение с iOS 7, я дам дополнительный ответ пользователям iOS 7 и далее.
Новая функция Фоновая выборка позволяет регулярно обновлять контент для приложения, которое находится в фоновом режиме. Временной интервал выборки не может быть задан пользователем, но скорее устанавливается iOS на основе статистики пользователя (использование приложения и т.д.).
К этой новой функции можно обратиться с помощью PhoneGap/Cordova через плагины - к счастью, уже был разработан плагин, обеспечивающий этот доступ. Вы можете установить его в проект Cordova на
cordova plugin add https://github.com/christocracy/cordova-plugin-background-fetch.git
В сочетании с плагином, обеспечивающим доступ к локальным уведомлениям iOS, это творит чудеса. Такой плагин также был разработан, например этот. Установите его в проект в Кордове
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 + и готовы выйти из своего общего кода в xcode, вы можете добавить "требуемые фоновые режимы" в файл .plist вашей сборки ios, и она не будет перезаписана новая сборка.
например. Я выбрал вариант "Загрузка приложений из сети"
Все, что вам нужно сделать, это убедиться, что ваше приложение выдает внешний мир каждые несколько минут (я использую firebase, поэтому получаю значение манекена node).
Я еще не отправил в App Store, но не могу понять, как он должен потерпеть неудачу, если запрос не слишком частый (я понимаю, что приложения имеют около 10 минут в фоновом режиме до их приостановки) и ресурсы, которые приложение потребности в фоновом режиме/в состоянии покоя не являются обременительными.
Это позволяет решить эту проблему до нескольких строк в вашем коде.