К сожалению, вы не можете получить обратный вызов или ответ, когда пользователь включает / выключает местоположение из настроек устройства, потому что нет такого способа связи с собственными настройками.
Но есть обходной путь для этого.Используйте 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, из-за которых вы не можете открыть Настройки> Конфиденциальность> Службы определения местоположения .