Получите обещание результата активации геолокации - PullRequest
0 голосов
/ 11 июня 2018

с этим кодом:

if (ionic.Platform.isIOS()) {
    cordova.plugins.diagnostic.switchToSettings();
} else {
cordova.plugins.diagnostic.switchToLocationSettings();
}

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

как я могу это сделать?

Я использую ionic1, хотя я предполагаю, что операциядля этого решения будет применяться к любой версии.большое спасибо.

1 Ответ

0 голосов
/ 12 июня 2018

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

Но есть обходной путь для этого.Используйте isLocationEnabled () из cordova-диагностический-плагин .

Ниже приведен полный рабочий код:

  $scope.$on("$ionicView.enter", function() {
        cordova.plugins.diagnostic.isLocationEnabled(function(enabled) {
          console.log("Location setting is " + (enabled ? "enabled" : "disabled"));

          if (!enabled) {
            var templateMsg = "Location is not enabled!\nDo you want to enable location service?"
            var confirmPopup = $ionicPopup.confirm({
              title: '<b>Location Service</b>',
              template: '<input alert-enter-key style="position: absolute; left: -9999px;">' + templateMsg.replace(/\n/g, '<br>'),
              okText: "Enable",
              okType: 'ok-button',
              cancelText: "Not now",
              cancelType: 'cancel-button'
            });

            confirmPopup.then(function(res) {
              if (res) {
                if (ionic.Platform.isIOS()) {
                  if (window.cordova && window.cordova.plugins.settings) {
                    window.cordova.plugins.settings.open("settings", function() {
                        console.log('settings opened');
                      },
                      function() {
                        console.log('failed to open settings');
                      }
                    );
                  } else {
                    console.log('openNativeSettingsTest is not active!');
                  }
                } else {
                  cordova.plugins.diagnostic.switchToLocationSettings();
                }                  }
            });
          }
        }, function(error) {
          console.error("The following error occurred: " + error);
        });
      });

Примечание: Чтобы открыть настройки местоположения ( Настройки> Конфиденциальность> Службы определения местоположения ) на iOS, естьэто плагин но есть изменения / в платформе iOS 11, из-за которых вы не можете открыть Настройки> Конфиденциальность> Службы определения местоположения .

...