Подтвердить что ты не робот

Получите местоположение в приложении Ionic/Cordova, когда в фоновом режиме

Возможно ли запустить фоновый сервис, если я закрою свое приложение Ionic/Cordova (как для iOS, так и для Android)?

Для этой цели я выбрал этот плагин https://github.com/katzer/cordova-plugin-background-mode

Пока у меня есть этот код:

$ionicPlatform.ready(function () {
            cordova.plugins.backgroundMode.isEnabled();

            cordova.plugins.backgroundMode.configure({
                silent: true
            }) 
              ............
            ///do some task
)}

Он отлично работает, если приложение переходит на передний план, но как только я закрываю приложение, задача, которую я запускаю, также останавливается. Итак, есть ли способ обхода/способ выполнения моей задачи, даже если приложение закрыто?

EDIT:

Я также добавил разрешения для iOS и Andorid, но получаю тот же результат.

ИЗМЕНИТЬ 2:

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

4b9b3361

Ответ 1

Ionic Framework

Недавно я реализовал такую ​​функцию в своем проекте. Я использовал Ionic, и я использовал режим фона плагина Cordova от Katzer. (сейчас я запускаю фоновый процесс с помощью симулятора iOS 9.2).

Вот фрагмент кода, чтобы заставить его работать:

// Run when the device is ready
document.addEventListener('deviceready', function () {

    // Android customization
    // To indicate that the app is executing tasks in background and being paused would disrupt the user.
    // The plug-in has to create a notification while in background - like a download progress bar.
    cordova.plugins.backgroundMode.setDefaults({ 
        title:  'TheTitleOfYourProcess',
        text:   'Executing background tasks.'
    });

    // Enable background mode
    cordova.plugins.backgroundMode.enable();

    // Called when background mode has been activated
    cordova.plugins.backgroundMode.onactivate = function () {

        // Set an interval of 3 seconds (3000 milliseconds)
        setInterval(function () {

            // The code that you want to run repeatedly

        }, 3000);
    }
}, false);

Ionic Framework 2

Здесь пример Ionic 2 ES6 готов:

// Import the Ionic Native plugin 
import { BackgroundMode } from 'ionic-native';

// Run when the device is ready
document.addEventListener('deviceready', () => {

    // Android customization
    // To indicate that the app is executing tasks in background and being paused would disrupt the user.
    // The plug-in has to create a notification while in background - like a download progress bar.
    BackgroundMode.setDefaults({ 
        title:  'TheTitleOfYourProcess',
        text:   'Executing background tasks.'
    });

    // Enable background mode
    BackgroundMode.enable();

    // Called when background mode has been activated
    // note: onactive now returns an returns an observable that emits when background mode is activated
    BackgroundMode.onactivate.subscribe(() => {
          // The code that you want to run repeatedly
    });
}, false);

Ответ 2

Я думаю, что отслеживание геолокации фона, которое вы пытаетесь реализовать, уже существует как плагин cordova, он называется cordova-plugin-mauron85-background-geolocation.

Этот плагин является одновременно службой геолокации переднего плана и фона. Это гораздо больше батарей и данных, а затем html5 геолокация или кордово-геолокационный плагин.

Существует множество вариантов конфигурации, см. страницу github, связанную выше.