Кордова ibeacon; Отправить локальное уведомление после того, как приложение было убито, но не работает на android

Я использую плагин Cordova/Phonegap iBeacon с ionicframework в моем проекте cordova. Я пытаюсь отправить локальное уведомление как на Android, так и на ios с плагином локального уведомления о кордоме, когда вы входите в контролируемый регион, когда приложение убито.

Вот мой код:

document.addEventListener("deviceready", onDeviceReady, false);

    function didDetermineStateForRegion(pluginResult) {
    }

    function didStartMonitoringForRegion (pluginResult) {
    }
    function didExitRegion(pluginResult) {
        $cordovaLocalNotification.add({
        id: 30244234234,
        title: "Good By!",
        text: "Hope to see you again."
            }).then(function () {
            });
    }

    function didEnterRegion (pluginResult) {
        $cordovaLocalNotification.add({
        title: "Welcome",
        text: "Tap to launch app"
            }).then(function () {

            });

    };
    function didRangeBeaconsInRegion (pluginResult) {

    }

    function onDeviceReady() {
        // Now safe to use device APIs
        function createBeacon(uuid,nofiyState) {

            var uuid = uuid; // mandatory
            var identifier = 'estimote'; // mandatory

            // throws an error if the parameters are not valid
            var beaconRegion = new cordova.plugins.locationManager.BeaconRegion(identifier, uuid);
            beaconRegion.notifyEntryStateOnDisplay = true;
            return beaconRegion;
        }
        var delegate = new cordova.plugins.locationManager.Delegate();
        delegate.didDetermineStateForRegion = didDetermineStateForRegion;

        delegate.didStartMonitoringForRegion = didStartMonitoringForRegion;

        delegate.didRangeBeaconsInRegion = didRangeBeaconsInRegion;
        delegate.didEnterRegion = didEnterRegion;
        delegate.didExitRegion = didExitRegion;

        var beaconRegion = createBeacon('02681445-8D1B-4F58-99D4-B25F4B129A58',true);
        // var beaconRegionBlue = createBeacon('02681445-8D1B-4F58-99D4-B25F4B129A58',1,,true);
        cordova.plugins.locationManager.setDelegate(delegate);

        // required in iOS 8+
        //cordova.plugins.locationManager.requestWhenInUseAuthorization();
        cordova.plugins.locationManager.requestAlwaysAuthorization();
        cordova.plugins.locationManager.startMonitoringForRegion(beaconRegion)
        .fail(console.error)
        .done();

    }

плагины cordova:

com.unarin.cordova.beacon 3.3.0 "Proximity Beacon Plugin"
de.appplant.cordova.plugin.local-notification 0.8.1 "LocalNotification"
nl.x-services.plugins.socialsharing 4.3.16 "SocialSharing"
org.apache.cordova.console 0.2.13 "Console"
org.apache.cordova.device 0.3.0 "Device"

версия cordova: 4.3.0

это отлично подходит для ios, даже если приложение убито, но в уведомлениях о андроидах отображаются только в случае приложения в фоновом режиме. Когда я убиваю приложение из диспетчера задач в android, я никогда не видел никаких локальных уведомлений.

Можно ли получать уведомление об андроиде, даже если приложение убито?

спасибо за помощь.

Ответы

Ответ 1

позволяет очистить некоторые вещи, есть состояния, которые вас пугают:

  • Приложение как услуга
  • Приложение работает в фоновом режиме (например, сведено к минимуму).
  • Приложение убито (не работает вообще)

во всех случаях 3-го состояния, когда вы убиваете приложение (через длинную кнопку возврата в пользовательских ромах или принудительное прекращение работы из меню приложения в вашей ОС), приложение просто удаляется из памяти, код не вызывается!

то, что обычно делается в этом случае, автоматически перезапускает сервис после его остановки. Проверьте этот ответ, и, как вы можете прочитать

это действительно очень плохой шаблон для сильного использования службы против готовность пользователей.

существует так много плагинов cordova для создания BroadcasteReceiver, однако простой ответ на ваш вопрос, если приложение убито, невозможно получить уведомление.

Но вы должны это учитывать: если пользователь убивает ваше приложение, это означает, что это было сделано намеренно, поэтому вы не должны беспокоиться о том, будет ли ваше приложение работать или нет, поскольку это проблема пользователя, а не ваша как разработчик.